手机版

PHP crypt()函数用法说明

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

PHP crypt()函数

定义和用法

crypt()函数返回一个使用DES、Blowfish或MD5算法加密的字符串。

该函数在不同的操作系统上表现不同,有些操作系统支持多种算法类型。安装时,PHP会检查有哪些算法可用,使用了哪些算法。

确切的算法取决于salt参数的格式和长度。Salt可以通过增加特定字符串和特定加密方法生成的字符串数量来使加密更加安全。

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

常数:

[CRYPT _ SALT _ LENGTH]-默认加密长度。使用长度为2 [CRYPT_STD_DES]的标准DES加密-基于标准DES的加密,带有字母中的2个字符。/0-9A-Za-z’。在salt中使用无效字符将导致函数失败。[CRYPT _ EXT _ DES]-基于扩展DES的加密有一个9个字符的salt,由一个下划线后跟4字节迭代次数和4字节salt组成。这些字符被编码为可打印字符,每个字符有6位,最低有效字符优先。值0到63被编码为' '。/0-9A-Za-z’。在salt中使用无效字符将导致函数失败。[CRYPT_MD5]-MD5对一个12个字符的salt进行加密,从$1$开始。[CRYPT_BLOWFISH]-Blowfish加密有一个以$2a$、$2x$或$2y$开头的salt,一个两位数的成本参数' $ ',以及字母表中的22个字符。/0-9A-Za-z’。使用字母表之外的字符将导致函数返回长度为0的字符串。“$”参数是基于基于base 2的Blowfish哈希算法的迭代次数的对数,必须在04-31的范围内。超出此范围的值将导致函数失败。[CRYPT_SHA_256]-SHA-256加密一个16个字符的盐,从5美元开始。如果salt字符串以“rounds=$”开头,则n的数值用于指示哈希循环的执行次数,这类似于Blowfish中的成本参数。默认循环数为5000,最小值为1000,最大值为999,999,999。超出此范围的任何n值都将被转换为最近的边界值。[CRYPT_SHA_512]-SHA-512加密一个16个字符的盐,从6美元开始。如果salt字符串以“rounds=$”开头,则n的数值用于指示哈希循环的执行次数,这类似于Blowfish中的成本参数。默认循环数为5000,最小值为1000,最大值为999,999,999。超出此范围的任何n值都将被转换为最近的边界值。在此函数支持多种算法的系统上,如果上述常量支持该函数,则将其设置为“1”,否则将其设置为“0”。

注意:没有对应的解密功能。crypt()函数使用单向算法。

语法

地穴(_str,salt _)

例1

?PHP $ hashed _ password=crypt(' my password ');//自动生成盐值/*您应该使用crypt()获得的完整结果作为盐值进行密码验证,以避免不同哈希算法带来的问题。(如上所述,基于标准DES算法的加密哈希使用2个字符的盐值,但基于MD5算法的哈希使用12个字符的盐值。)*/if(hash _ equals($ hashed _ Password,crypt($user_input,$ hashed _ Password)){ echo ' Password verified!';} ?例2

用htpasswd加密Crypt():

?Php //设置密码$ password=' mypassword//获取哈希值,使用自动盐值$ hash=crypt($ password);例1

在本例中,我们使用不同的哈希类型:

?php if (CRYPT_STD_DES==1) { echo "标准3360。地穴(' rasmuslerdorf ',' rl ').\ n;} if(crypt _ ext _ des==1){ echo '扩展到3360。}。crypt(' rasmuslervillage ',' _J9-什么拉萨姆)。'\ n;} if(crypt _ MD5==1){ echo ' MD 5:}。crypt('rasmuslerdorf ',' $1$rasmusle$ ').\ n;} if(crypt _ blow fish===1){ echo ' blow fish :}。crypt('rasmuslerdorf ',' $ 2a $ 07 $ usesomesillytringforalt $ ').\ n;} if(crypt _ sha 256==1){ echo ' sha-256:}。crypt('rasmuslerdorf ',' $ 5 $ rounds=5000 $ usesomesillytringforlt $ ')\ n;} if(crypt _ sha 512==1){ echo ' sha-5123360 .crypt('rasmuslerdorf ',' $ 6 $ rounds=5000 $ usesomesillytringforlt $ ')\ n;}?你是说.(哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟):

3330 rl。3 STK。4t 8 mextended de 3330 _ j9的标准-什么rasmbyk 8r 9 aiwncmd 5:美元rasmusle $ riscgzzpwk 3 uhcdiwx vin 0 blowfish :美元2至07美元usesomesillysingfor2 udlvp 1 ii 2e ./u9c 8 sbjqp 8i 90 DH 6 hisa-256: $ 5回合=5000 $使用somerseries $ kqjwpanxzhkq 2 bob 43 tsayhewsq 1 lr 5 qnypcdh/TP。6 sha-512:美元6发=5000美元ussomerselyxatmp美元D4 irxatmp 7 rx 3 P3 inaxbomenaichkrqp 22 JZ 6 y47 WC 6 bkuuuuboov 1 I .S7-1200可编程控制器ChWQW21 .战斗机

乌斯

朱庇特朱庇特朱庇特朱庇特,-你好-你好-你好,云娥与云娥。你好,我是韩大夫,我是韩大夫

版权声明:PHP crypt()函数用法说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。