我正在尝试验证字符串是否与PHP中的SHA-512(Unix)哈希值($ 6 $ ..)匹配。很像Blowfish(BCrypt)的password_verify()
函数,而是SHA-512(Unix)。
我偶然发现hash_equals
,它倾向于使用相同的时间来比较两个字符串。但是,我无法在以下内容中获得预期的输出boolean true
:
<?php
$expected = '$6$9e87b0c78da9ab83$5V16BLuWUkoG3g1oH3kwhs8rzBpjydUps1qBXuY3PkkFzDSjqklT47L5pmG8JPqDRDk.ZTJoS/ogtHkyXC2L40';
if (CRYPT_SHA512 == 1) {
$correct = crypt('OkvraMADvua', '$6$12$usesomesillystringforsalt$');
}
var_dump(hash_equals($expected, $correct));
?>
现在,即使boolean false
的哈希值对应于明文,并且为$expected
变量生成的哈希值也匹配相同的明文(OkvraMADvua),我得到$correct
。< / p>
boolean true
。