PHP Crypt函数问题

时间:2015-09-01 08:40:35

标签: php login crypt

我正在使用crypt函数在DB中存储用户密码。 原始密码由他自己加密,用DB中的密码检查(我知道这不是一个好的做法,但目前的情况就是这样)。

问题在于:

crypt('qixin26428968123', 'qixin26428968123') === crypt('qixin26428968', 'qixin26428968')

所以看来,如果密码是123456并且用户尝试使用123456abcde登录,则登录将成功,这意味着用户可以随时选择密码登录系统“n”位是正确的。

这是一个已知问题吗?如何修复它,是否有为crypt函数指定的选项?

谢谢。

1 个答案:

答案 0 :(得分:2)

来自manual

  

标准的基于DES的crypt()将salt作为前两个返回   输出的字符。它也只使用前八个字符   str,所以更长的字符串以相同的八个字符开头   将产生相同的结果(当使用相同的盐时)。

CRYPT_SHA512 使用16个字符