哈希:PHP Crypt()无法正常工作


Hashing: PHP Crypt() not working correctly

我对crypt()有一个奇怪的行为。这是我在Zend:中的代码

$correct_password_hash = $this->getHelper('User')->generateHash('bd468cffe6b179d8e5ef30bd993d37e5','572906092501a20f4222a54.54479708');             
$edited_password_hash = $this->getHelper('User')->generateHash('bd468cffe6b179d8e5ef30bd993d37e','572906092501a20f4222a54.54479708');
echo "Correct Password Hash - ".$correct_password_hash."<br/>";
echo "Edited Password Hash - ".$edited_password_hash;

我将一个md5生成的字符串作为第一个参数传递给助手函数generateHash,并将一个salt作为第二个参数。我将生成的哈希存储在$correct_password_hash变量中。

现在,在对同一个helper函数的第二次调用中,我刚刚删除了第一个参数末尾的字母5。第二个参数是相同的。但它仍然生成与第一个相同的散列。

这是输出:

正确的密码哈希-57CO1Lzyk81kk
已编辑的密码哈希-57CO1Lzyk 81kk

helper generateHash如下所示:

public function generateHash($md5, $salt)
{
    return crypt($md5, $salt);
}

crypt()应该是这样工作的吗?

谢谢。

crypt()默认为基于DES的标准算法。这反过来只使用密码中的8个第一个字符和salt中的2个第一个字母。

有关如何修改crypt()行为的更多详细信息,请参阅crypt)文档:http://php.net/crypt

如果您正在进行密码哈希,请使用bcrypt。