我正在努力确保我使用sha512进行会话散列.当我打印出我的算法时,我得到了
Array
(
[0] => md2
[1] => md4
[2] => md5
[3] => sha1
[4] => sha224
[5] => sha256
[6] => sha384
[7] => sha512
[8] => ripemd128
etc....
)
Run Code Online (Sandbox Code Playgroud)
所以在php.ini中我设置它,
session.hash_function = 7
Run Code Online (Sandbox Code Playgroud)
我感到困惑的唯一原因是在.ini文件中它列出的散列方案与php打印的方式不同,例如0作为md5而不是md2.
; Select a hash function
; 0: MD5 (128 bits)
; 1: SHA-1 (160 bits)
Run Code Online (Sandbox Code Playgroud)
这只是旧版php版本的默认哈希方案吗?
0并且1是实际记录的唯一数值:
session.hash_function允许您指定用于生成会话ID的哈希算法."0"表示MD5(128位),"1"表示SHA-1(160位).
如果您想利用其他算法:
从PHP 5.3.0开始,也可以指定散列扩展(如果可用)提供的任何算法,如sha512或whirlpool.可以使用hash_algos()函数获得支持的算法的完整列表.
我承认它没有明确表达,但该指令的定义表明它的论证是mixed类型的.它需要一个整数(仅适用于MD5和SHA-1)或hash_algos()返回的算法名称(字符串).(顺便说一句,这也意味着有两种方法可以指定MD5和SHA-1.)开发人员在添加新算法时改变了主意,但保持向后兼容性.
我已经尝试过这段代码了,我得到了一个很大的会话ID:
ini_set('session.hash_function', 'whirlpool');
Run Code Online (Sandbox Code Playgroud)