我可以验证algo php session hashing正在使用什么吗?

时间:2010-11-16 12:41:32

标签: php session hash

我正在努力确保我使用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 个答案:

答案 0 :(得分:7)

01actually documented唯一的数值:

  

session.hash_function允许你   指定用于的哈希算法   生成会话ID。 '0'表示   MD5(128位)和“1”表示SHA-1   (160位)。

如果您想利用其他算法:

  

从PHP 5.3.0开始,也可以   指定提供的任何算法   通过哈希扩展(如果是的话)   可用),像sha512或漩涡。   完整的支持列表   算法可以用   hash_algos()函数。

我承认它没有明确表达,但该指令的定义表明它的参数是mixed类型。它需要hash_algos()返回的整数(仅适用于MD5和SHA-1)或算法的名称(字符串)。 (顺便说一下,这也意味着有两种方法可以指定MD5和SHA-1。)开发人员在添加新算法时改变主意,但保持向后兼容性。

我已经尝试过这段代码了,我得到了一个巨大的会话ID:

ini_set('session.hash_function', 'whirlpool');

答案 1 :(得分:2)

hash_algos()返回所有可用算法的字符串数组,因此不适合作为ini-setting“session.hash-function”的参数。只是尝试将您喜欢的算法设置为字符串而不是“0”或“1”。

答案 2 :(得分:2)

将哈希函数设置为字符串

session.hash_function = sha512