如果我使用crypt()
哈希密码:
$password = "my_password_12345";
$salt = base64_encode(openssl_random_pseudo_bytes(64, $cstrong));
$crypt = crypt($password, $salt);
我得到这样的东西
echo $crypt; //AG6hHvhjwnqpc
所以,当我检查哈希时,我这样做,一切正常
echo crypt($password, $crypt); //AG6hHvhjwnqpc
但为什么会发生以下情况?我做了同样的检查,但使用类似于前一个的密码,我得到相同的哈希。
$password = "my_password_12345_not!";
echo crypt($password, $crypt); //AG6hHvhjwnqpc
我希望有一个不同的哈希,但我得到相同的
答案 0 :(得分:3)
在PHP中,crypt
函数仅使用8个第一个字符:
标准的基于DES的crypt()返回salt作为输出的前两个字符。它也只使用str的前八个字符,因此以相同的八个字符开头的较长字符串将产生相同的结果(当使用相同的salt时)。