PHP session.hash_function使用哪种散列算法作为默认值混合使用

Jim*_*ski 2 php initialization

PHP session.hash_function使用哪种哈希算法作为默认值?以下页面说默认值为md5"0":http: //php.net/manual/en/session.configuration.php#ini.session.hash-function 但是哈希算法页面显示代码"0"为md2 . http://php.net/manual/en/function.hash-algos.php

如果php.ini上的代码"0"真的对应于md5那么php.ini的其他哈希算法的代码是什么?例如sha512的代码是什么?

cod*_*dge 6

如果您运行print_r(hash_algos());的follwing阵列是一种更可靠的方式找到它的设置是哪种算法,如前所述这里

可以使用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
)
Run Code Online (Sandbox Code Playgroud)

更多细节:

该函数hash_algos返回一个字符串数组.数组的索引不指示ini文件的设置.您应该使用字符串,即"sha512"用于ini设置,例如session.hash_function = sha512.

由于它是在文档中编写的,因此从PHP 5.3开始可以指定字符串值

从PHP 5.3.0开始,也可以指定散列扩展(如果可用)提供的任何算法,如sha512whirlpool.

回答你的两个问题:

  1. 什么是默认值?

默认值为"0" - 正如您可以在Github上的官方PHP源代码中看到的那样

  1. 除了"0"和"1"之外还有哪些其他值可以分别记录?

嗯,这有点难以解释,但我试试.根据此值的C实现,您可以在此处找到.根据此函数内部检查,似乎只有01其他值.的其他值似乎是那些从hash_algos()数组.

  1. 为什么0 = MD5且1 = SHA1?(你可能会问)因为这个enum在C中

    枚举{PS_HASH_FUNC_MD5,PS_HASH_FUNC_SHA1,PS_HASH_FUNC_OTHER};

坦率地说,你可以放(种类的数组)索引然后导致

0 => PS_HASH_FUNC_MD5,
1 => PS_HASH_FUNC_SHA1,
... PS_HASH_FUNC_OTHER
Run Code Online (Sandbox Code Playgroud)