当我使用盐水CRYPT_MD5来加密我的密码时会加密什么?

Eve*_*oob 4 php security passwords hash

在字符串上使用md5始终生成字母数字加密结果,即:无符号.

但是,当我使用php crypt()函数,特别是CRYPT_MD5(并且它已打开,我已检查过)时,它返回的假定md5哈希看起来不像md5哈希.

例如:

如果我md5字符串'密码',我得到:

$pass = md5('password');
echo $pass;
//5f4dcc3b5aa765d61d8327deb882cf99
Run Code Online (Sandbox Code Playgroud)

如果我使用CRYPT_MD5,它由'$ 1 $'前缀表示,'$'后缀表示盐为'salt':

$pass = crypt('password', '$1$salt$');
echo $pass;
//$1$salt$qJH7.N4xYta3aEG/dfqo/0
Run Code Online (Sandbox Code Playgroud)

现在,使用的算法和盐按预期显示,'$ 1 $'表示使用了CRYPT_MD5,盐在$符号之间显示为'盐'.

但是..在最后一个$符号之后的哈希密码看起来不像md5 ......它有斜线和全停.

为什么这样哈希呢?这不是真正的md5吗?

请问你是否需要我澄清这些.啊.

Dou*_*der 10

  1. MD5是一种不加密的散列算法.
  2. MD5的输出是128位数据.您的第一个示例是将128位编码为32个十六进制数字(每位4位).第二个例子是地穴字母表.0-9A-Za-z - 每个字符6位的21个字符.

有关crypt算法的更多详细信息,请参阅http://www.gnu.org/software/libtool/manual/libc/crypt.html

  • 如果你不想要`crypt`输出格式,不要使用`crypt`函数...... (2认同)