Могу ли я проверить, что использует хэширование algo php session? - PullRequest
7 голосов
/ 16 ноября 2010

Я пытаюсь убедиться, что я использую sha512 для хеширования сессии.Когда я распечатываю свои алгоритмы, я получаю

Array
(
[0] => md2
[1] => md4
[2] => md5
[3] => sha1
[4] => sha224
[5] => sha256
[6] => sha384
[7] => sha512 
[8] => ripemd128
etc....
)

Так что в php.ini я установил его следующим образом:

session.hash_function = 7

Единственная причина, по которой я запутался, заключается в том, что в файле .iniв нем перечислены схемы хеширования, отличные от тех, что печатает php, например 0, так как md5 не md2.

; Select a hash function
; 0: MD5   (128 bits)
; 1: SHA-1 (160 bits)

Это просто схемы хеширования по умолчанию, возможно, для более старой версии php или чего-то еще?

Ответы [ 3 ]

7 голосов
/ 16 ноября 2010

0 и 1 являются единственными числовыми значениями, которые фактически задокументированы :

session.hash_function позволяет вам указать алгоритм хеширования, используемый для генерировать идентификаторы сеанса. «0» означает MD5 (128 бит) и «1» означают SHA-1 (160 бит).

Если вы хотите использовать другие алгоритмы:

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

Я допускаю, что это не ясно выражено, но определение директивы гласит, что ее аргумент имеет тип mixed. Он ожидает либо целое число (только для MD5 и SHA-1), либо имя (строка) алгоритма, возвращаемое hash_algos () . (Кстати, это также означает, что есть два способа указать MD5 и SHA-1.) Разработчики изменили свое мнение, когда были добавлены новые алгоритмы, но сохранили обратную совместимость.

Я попробовал этот код и получил огромный идентификатор сессии:

ini_set('session.hash_function', 'whirlpool');
2 голосов
/ 16 ноября 2010

установка хеш-функции как строки работает

session.hash_function = sha512
2 голосов
/ 16 ноября 2010

hash_algos () возвращает массив строк всех доступных алгоритмов и, следовательно, не подходит в качестве аргумента для ini-настройки "session.hash-function".Просто попробуйте установить предпочтительный алгоритм в виде строки вместо «0» или «1».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...