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

Bri*_*ian 7 php hash session

我正在努力确保我使用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版本的默认哈希方案吗?

Álv*_*lez 7

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)