我在使用 crypt 时遇到问题。我正在为客户重建网站。所以从以前的版本中继承了很多代码。我必须保持网站的原始数据库完好无损,所以我必须小心我在代码方面所做的更改。以前的开发人员使用 crypt() 函数来创建用户密码的哈希值以进行存储。我看到的奇怪效果是,同一个密码的细微变化有时会产生完全相同的哈希值。我不太了解 crypt 的工作原理,但在我看来,这不应该发生。这里有一些代码可以作为示例。
echo crypt('Colliedog6','wfd')."\n";
echo crypt('Colliedog10','wfd')."\n";
这将在我的服务器上返回相同的哈希字符串。我正在使用该盐字符串,因为这是以前的开发人员使用的,并且所有当前密码都是使用该盐字符串制作的,所以我真的需要使用它,除非我们想强制所有用户重置密码。这不一定是不可能的,但我们想避免它。为什么 crypt 会像上面那样采用两个稍微不同的字符串并创建相同的哈希?