中文文档中 hash 比较方式不推荐使用了,请参考英文文档,使用用 hash_equals。
楼主你应该误解了示例中的代码,
使用 crypt 加密时,同样的字符串,使用同样的 salt,加密结果是一样的,
示例中的 $password 其实是之前已经 hash 过的,也就是英文版中的 $hashed_password,
$hashed_password 字符串的前面一部分就是之前使用的 salt,
crypt 函数并不会把整个 $hashed_password 作为新的 salt,它只会截取 $hashed_password 的 salt 部分,
因此,只要 $user_input 是正确的密码,又使用了和 $hashed_password 相同的 salt,输出的结果肯定是和 $hashed_password 一样。
具体的实现代码见:
http://lxr.php.net/xref/PHP_5_3/ext/standard/crypt.c#150不过现在已经不推荐直接使用 crypt 加密密码了,可以直接使用 password_hash 与 password_verify 来加密和验证密码。
我看了一下,crypt 中文文档被别人修改了还未通过审核,所以暂时无法修订过时的东西,不过可以召唤文档组成员进行修订 @
shiny 。