如何在PHP中使用crypt()函数

  介绍

如何在PHP中使用crypt()函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> PHP crypt()函数

<强>定义和用法

crypt()函数返回使用DES,河豚或MD5算法加密的字符串。

在不同的操作系统上,该函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP会检查什么算法可用以及使用什么算法。

确切的算法依赖于盐参数的格式和长度.salt可以通过增加由一个特定字符串与一个特定的加密方法生成的字符串的数量来使得加密更安全。

这里有一些和crypt()函数一起使用的常量。这些常量值是在安装时由PHP设置的。

常量:

<李>

[CRYPT_SALT_LENGTH] -默认的加密长度。使用标准的DES加密,长度为2

<李>

[CRYPT_STD_DES] -标准的基于DES加密有2个字符的盐,来自字母表“。/0-9A-Za-z"。在盐中使用无效的字符将引发函数失败。

<李>

[CRYPT_EXT_DES] -扩展的基于DES加密有9个字符的盐,由1个下划线,后边跟4个字节的迭代次数和4个字节的盐组成。这些被编码为可打印字符,每个字符6位,最低有效字符优先。值0到63被编码为“。/0-9A-Za-z"。在盐中使用无效的字符将引发函数失败。

<李>

[CRYPT_MD5] - MD5加密有12个字符的盐,以1美元开始。

<李>

[CRYPT_BLOWFISH] -河豚加密有一个以2美元,美元2 x或y 2美元美元开始的盐,一个两位数的成本参数,“美元,以及来自字母表“。/0-9A-Za-z"中的22个字符。使用字母表以外的字符将引发函数返回一个长度为0的字符串!”“美元;参数是以2为底的基于河豚散列算法的迭代次数的对数,必须在04-31范围内。在该范围以外的值将引发函数失败。

<李>

[CRYPT_SHA_256] - sha - 256加密有16个字符的盐,以5美元开始。如果盐字符串以“轮=懊涝?开始,N的数字值用于表示散列循环被执行的次数,这与河豚中成本的参数类似。默认的循环次数是5000年最小值是1000年最大值是999999999,任何超出这个范围的N的值将会转换成最接近的边界值。

<李>

[CRYPT_SHA_512] - sha - 512加密有16个字符的盐,以6美元开始。如果盐字符串以“轮=懊涝?开始,N的数字值用于表示散列循环被执行的次数,这与河豚中成本的参数类似。默认的循环次数是5000年最小值是1000年最大值是999999999,任何超出这个范围的N的值将会转换成最接近的边界值。

在该函数支持多种算法的系统上,上面的常量如果支持则设置为“1”,否则设置为“0”。

注释:没有相应的解密函数.crypt()函数使用一种单向算法。

<强>语法

地下室(,_str salt_ )

如何在php中使用crypt()函数

如何在php中使用crypt()函数

<强>实例1

& lt; ? php  hashed_password 美元;=,地下室(& # 39;我的密码# 39;);,//,自动生成盐值,/*,你应当使用,crypt ()   得到的完整结果作为盐值进行密码校验,以此来避免使用不同散列算法导致的问题。(如上所述,基于标准,DES 算法的密码散列使用,2,字符盐值,但是基于,MD5   算法的散列使用,12,个字符盐值)*/,if  (hash_equals (hashed_password美元,crypt()美元user_input)   hashed_password美元))),{,echo “Password 验证!“,,},?在

<强>实例2

利用htpasswd进行crypt()加密:

& lt; ? php //,设置密码,Password 美元;=,& # 39;我的密码# 39;,,//,获取散列值,使用自动盐值,hash 美元;=crypt(密码)美元;,?在

<强>实例1

在本实例中,我们以不同散列类型使用:

& lt; ? php  if  (==CRYPT_STD_DES  1), {, echo  & # 39; Standard  DES:, & # 39;,只crypt (& # 39; rasmuslerdorf& # 39;   & # 39;rl # 39;),只“\ n",,}, if  (==CRYPT_EXT_DES  1), {, echo  & # 39; Extended  DES:, & # 39;,。   crypt (& # 39; rasmuslerdorf& # 39;,, & # 39; _J9 . . rasm& # 39;),只“\ n",,}, if  (==CRYPT_MD5  1), {, echo  & # 39; MD5:   & # 39;,只crypt (& # 39; rasmuslerdorf& # 39;,, & # 39; $ 1 $ rasmusle $ & # 39;),只“\ n",,}, if  (==CRYPT_BLOWFISH  1)   {,echo  & # 39;河豚:,& # 39;,只crypt (& # 39; rasmuslerdorf& # 39;   & # 39;$ 2 $ 07 usesomesillystringforsalt & # 39;美元),只“\ n",,}, if  (==CRYPT_SHA256  1),{回声   & # 39;sha - 256: & # 39;,只crypt (& # 39; rasmuslerdorf& # 39;   & # 39;5轮美元=5000 usesomesillystringforsalt & # 39;美元),只“\ n",,}, if  (==CRYPT_SHA512  1)   {,echo  & # 39; sha - 512:, & # 39;,只crypt (& # 39; rasmuslerdorf& # 39;   & # 39;6轮美元=5000 usesomesillystringforsalt & # 39;美元),只“\ n",,}, ?在

如何在PHP中使用crypt()函数