инициализация — какой алгоритм хеширования используется PHP session.hash_function по умолчанию

Какой алгоритм хеширования используется PHP session.hash_function по умолчанию?
На следующей странице написано, что по умолчанию используется md5 «0»:
http://php.net/manual/en/session.configuration.php#ini.session.hash-function
Однако на странице хеш-алгоритма показан код «0», равный md2.
http://php.net/manual/en/function.hash-algos.php

Если код «0» на php.ini действительно соответствует md5, то каковы коды других хеш-алгоритмов для php.ini? Например, каков код для sha512?

2

Решение

Если вы бежите print_r(hash_algos()); следующий массив является более надежным способом найти, какие настройки для какого алгоритма, как указано Вот

Полный список поддерживаемых алгоритмов можно получить с помощью функции hash_algos ().

Я запустил его с PHP 7.0.5

Array
(
[0] => md2
[1] => md4
[2] => md5
[3] => sha1
[4] => sha224
[5] => sha256
[6] => sha384
[7] => sha512
[8] => ripemd128
[9] => ripemd160
[10] => ripemd256
[11] => ripemd320
[12] => whirlpool
[13] => tiger128,3
[14] => tiger160,3
[15] => tiger192,3
[16] => tiger128,4
[17] => tiger160,4
[18] => tiger192,4
[19] => snefru
[20] => snefru256
[21] => gost
[22] => gost-crypto
[23] => adler32
[24] => crc32
[25] => crc32b
[26] => fnv132
[27] => fnv1a32
[28] => fnv164
[29] => fnv1a64
[30] => joaat
[31] => haval128,3
[32] => haval160,3
[33] => haval192,3
[34] => haval224,3
[35] => haval256,3
[36] => haval128,4
[37] => haval160,4
[38] => haval192,4
[39] => haval224,4
[40] => haval256,4
[41] => haval128,5
[42] => haval160,5
[43] => haval192,5
[44] => haval224,5
[45] => haval256,5
)

Больше деталей:

Функция hash_algos возвращает массив строк. Индексы массива не указывают настройку для INI-файла. Вы должны использовать строку, т.е. е. «sha512» для настройки ini, например session.hash_function = sha512,

Как написано в документации, указание строкового значения возможно начиная с PHP 5.3

Начиная с PHP 5.3.0 также возможно указывать любой из алгоритмов, предоставляемых расширением хеша (если оно доступно), например sha512 или же джакузи.

Чтобы ответить на два ваших вопроса:

  1. Какое значение по умолчанию?

Значением по умолчанию является «0» — как вы можете видеть в официальный исходный код PHP на Github

  1. Какие другие значения, кроме «0» и «1», разрешены соответственно документированием?

Ну, это немного сложнее объяснить, но я стараюсь. Согласно реализации C для этого значения, которое вы можете найти Вот. Согласно проверяет внутри этой функции кажется, только 0 или же 1 или же Другой ценности. Другой кажется, что значения из массива hash_algos ().

  1. Почему 0 = MD5 и 1 = SHA1? (вы можете спросить)
    Из-за этого enum в С

    enum {
    PS_HASH_FUNC_MD5,
    PS_HASH_FUNC_SHA1,
    PS_HASH_FUNC_OTHER
    };

Откровенно говоря, вы можете поместить (вид массива) индексы, перед которыми затем приводит

0 => PS_HASH_FUNC_MD5,
1 => PS_HASH_FUNC_SHA1,
... PS_HASH_FUNC_OTHER
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]