我有使用crypt的问题.我正在为客户重建一个网站.因此,以前的版本中有很多继承的代码.我必须保持站点原始数据库,所以我必须小心我改变代码的方式.之前的开发人员使用crypt()函数创建用于存储的用户密码哈希.我看到的奇怪效果是,相同密码的轻微变化有时会创建完全相同的哈希.我不太了解地穴如何运作,但在我看来,这不应该发生.这里有一些代码作为例子.
echo crypt('Colliedog6','wfd')."\n";
echo crypt('Colliedog10','wfd')."\n";
Run Code Online (Sandbox Code Playgroud)
这将在我的服务器上返回相同的哈希字符串.我正在使用那个salt字符串,因为这是以前的开发人员使用的,所有当前的密码都是使用该salt字符串制作的,所以我真的需要使用它,除非我们想强制所有用户重置密码.这不一定是不可能的,但我们想避免它.为什么crypt会像上面那样使用两个稍微不同的字符串并创建相同的哈希?