PHP session.hash_函数默认使用哪种哈希算法

PHP session.hash_函数默认使用哪种哈希算法,php,initialization,Php,Initialization,PHP session.hash_函数默认使用哪种哈希算法? 以下页面显示默认值为md5“0”: 但是,哈希算法页面将代码“0”显示为md2。 如果php.ini上的代码“0”确实对应于md5,那么php.ini的其他哈希算法的代码是什么?例如,sha512的代码是什么?如果运行print\r(hash\u algos())如下所述,下面的数组是一种更可靠的方法,可以找到哪些设置适用于哪个算法 使用hash_algos()函数可以获得受支持算法的完整列表 我用PHP7.0.5运行它 Array

PHP session.hash_函数默认使用哪种哈希算法? 以下页面显示默认值为md5“0”: 但是,哈希算法页面将代码“0”显示为md2。

如果php.ini上的代码“0”确实对应于md5,那么php.ini的其他哈希算法的代码是什么?例如,sha512的代码是什么?

如果运行
print\r(hash\u algos())如下所述,下面的数组是一种更可靠的方法,可以找到哪些设置适用于哪个算法

使用hash_algos()函数可以获得受支持算法的完整列表

我用PHP7.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文件的设置。你应该用这个字符串。Eini设置为“sha512”,如
session.hash\u function=sha512

正如文档中所写的那样,从PHP5.3开始,可以指定字符串值

由于PHP5.3.0,还可以指定散列扩展(如果可用)提供的任何算法,如sha512或whirlpool

回答您的两个问题:

  • 默认值是多少
  • 默认值为“0”-正如您在Github上看到的那样

  • 除了“0”和“1”之外,还允许记录哪些其他值
  • 好吧,这有点难解释,但我尽力了。根据C实现的这个值,您可以找到。根据统计,似乎只有或值。其他值似乎是来自hash_algos()数组的值

  • 为什么0=MD5和1=SHA1?(你可以问) 正因为如此,C

    枚举{ PS_HASH_FUNC_MD5, PS_HASH_FUNC_SHA1, PS_HASH_FUNC_其他 };

  • 坦率地说,您可以在索引之前放置(类似于数组的)索引,然后生成

    0 => PS_HASH_FUNC_MD5,
    1 => PS_HASH_FUNC_SHA1,
    ... PS_HASH_FUNC_OTHER
    

    我否决了你的答案,因为它没有回答问题。ini说代码“0”是md5,但当使用print_r(hash_algos())时,所有版本的php都将代码0显示为md2;。看起来php.ini使用的代码与散列算法代码不同。如果是这样,那么php.ini的代码是什么。@Jimski用更多细节更新了我的答案。希望这能让事情变得更清楚。@Jimski再次编辑,希望它能回答你的问题question@Jimski谢谢!很好,我们得出了相同的结论,即使这需要一些时间;)我对你的答案投了赞成票,因为它很好地解释了一切。我只是在看sessions.c,得出了相同的结论。非常感谢。