如果運行print_r(hash_algos());
的follwing陣列是一種更可靠的方式找到它的設置是哪種算法,如前所述here
可以與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文件的設置。你應該使用字符串,我。即用於ini設置的「sha512」,如session.hash_function = sha512
。
因爲它是寫在文檔,指定一個字符串值是可能的,因爲PHP 5.3
由於PHP 5.3.0,也可以指定任意的由散列擴展提供的算法(如果它是可用的),如sha512或惠而浦。
要回答你的兩個問題:
- 什麼是默認值?
的缺省值是 「0」 - 你可以在offical PHP source code看到在Github
- 「0」 和 「1」 是允許的,什麼其他值,儘管分別記錄?
那麼,這有點難以解釋,但我嘗試。根據這個值的C實現,你可以找到here。根據checks inside this function,似乎只有0或1或other的值。 其他值似乎是來自hash_algos()數組的值。
爲什麼0 = MD5和1 = SHA1?(你可能會問) 由於這種enum
在C
枚舉{ PS_HASH_FUNC_MD5, PS_HASH_FUNC_SHA1, PS_HASH_FUNC_OTHER };
坦率地說speeking你可以把(一種基於陣列)的指標,其在此之前導致
0 => PS_HASH_FUNC_MD5,
1 => PS_HASH_FUNC_SHA1,
... PS_HASH_FUNC_OTHER
我downvoted你的答案,因爲它沒有回答這個問題。 php.ini表示代碼「0」是md5,但是當使用print_r(hash_algos());時,所有版本的PHP都顯示代碼0爲md2。所以看起來像php.ini使用與散列算法代碼不同的代碼。如果是這樣,那麼php.ini的代碼是什麼。 – Jimski
@Jimski更新了我的答案和更多細節。希望這可以讓事情更清楚。 – codedge
@Jimski再次編輯,希望它能回答你的問題 – codedge