PHP会话默认使用哪种哈希算法。hash_function?以下页面显示默认值为md5"0":http://php.net/manual/en/session.configuration.php#ini.session.hash-函数然而,散列算法页面显示代码"0"为md2。http://php.net/manual/en/function.hash-algos.php
如果php.ini上的代码"0"真的对应于md5,那么php.ini的其他哈希算法的代码是什么?例如,sha512的代码是什么?
如果运行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或漩涡。
回答您的两个问题:
- 默认值是多少
默认值是"0",正如您在Github 上的官方PHP源代码中看到的那样
- 除了"0"answers"1"之外,还允许分别记录哪些其他值
嗯,这有点难以解释,但我尽力了。根据这个值的C实现,你可以在这里找到。根据该函数内部的检查,似乎只有0或1或者其他值。其他值似乎来自hash_algos()数组。
为什么0=MD5,1=SHA1?(你可能会问)因为这个
enum
在C 中枚举{PS_ HASH_ FUNC_,fsha1,PS_HASH_FUNC_OTHER};
坦率地说,你可以把(一种数组)索引放在前面,然后产生
0 => PS_HASH_FUNC_MD5,
1 => PS_HASH_FUNC_SHA1,
... PS_HASH_FUNC_OTHER