在存入数据库之前,我使用PHP的crypt()函数对密码进行加密。现在如果密码包含数字,则具有相同子字符串的所有密码将生成相同的加密。例如,下面的所有密码都会生成相同的加密。使用crypt()函数生成相同加密的不同密码
echo crypt('abcdefg123','mykey').'<br>';
echo crypt('abcdefg123','mykey').'<br>';
echo crypt('abcdefg123456','mykey').'<br>';
加密的密码结果是
myeWT99Ku6TaM
我在做什么错?或者它是一个错误?
仅使用前8个字符来生成散列。由于所有输入中的前8个字符相同,因此您将得到相同的结果。此外,生成的散列将<= 13个字符 – Tushar
我也建议你检查这个密码散列在PHP中:http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing -passwords-in -php – Night2
'crypt()'不提供[加密](https://paragonie.com/blog/2015/08/you-wouldnt-base64-a-password-cryptography-decoded),它提供密码散列。密码哈希是密码学,但它不是加密。 –