PHP crypt函数密码编码

Rob*_*ght 2 php crypt salt

以下代码以任何方式返回相同的加密密码.为什么以及如何阻止这种情况.

$pwd = 'shits8888';
$salt = '50153fc193af9';

echo crypt($pwd,$salt)
Run Code Online (Sandbox Code Playgroud)

显然有些东西丢失了,因为这会返回相同的东西

$pwd = 'shits8888hjhfgnsdkjf8744884';
$salt = '50153fc193af9';

echo crypt($pwd,$salt)
Run Code Online (Sandbox Code Playgroud)

Dav*_*dom 6

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

http://php.net/manual/en/function.crypt.php

如果你想更好地控制用于哈希的算法,我建议你看一下mcrypt.

还要注意crypt()(尽管名称)实际上并不加密字符串,它只是生成一个哈希.如果你指定的盐,你可能也存储在某个地方,你可能会用这样的东西做得更好:

function my_crypt ($string, $salt) {
  return sha1($string.$salt); // ...or your hashing function of choice
}
Run Code Online (Sandbox Code Playgroud)