关于php的crypt

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

http://www.w3school.com.cn/php/func_string_crypt.asp

上面的文档是crypt的详细说明。

在我的实践中发现,不加salt值,默认是CRYPT_MD5,随机产生了以 $1$ 开始的12字符的salt值。正如文档中提到的:

如果没有提供盐值,PHP 将自动生成一个 2 个字符(DES)或者 12 个字符(MD5)的盐值 ,这取决于 MD5 crypt() 的可用性。

 不加salt值的前提下,若md5可用,则md5优先。

 

 注意两个问题:

1、crypt的返回值前面部是salt值,不同的算法,salt的格式及长度不同。

2、调用crypt时会根据salt的格式及长度来决定算法。

crypt验证过程:

$PWD='12345';
$crypt_PWD=crypt($PWD);
echo $crypt_PWD; //密文前12个字符为salt值
echo crypt($PWD,$crypt_PWD); //自动取$crypt_PWD前12个字符作为salt
echo crypt($PWD,substr($crypt_PWD,0,12)); //与上面一行的返回值相同

猜你喜欢

转载自23497465-qq-com.iteye.com/blog/2292469