在PHP项目中实现加密的方式有哪些

  介绍

在PHP项目中实现加密的方式有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

PHP中的加密方式有如下几种

<强> 1。MD5加密

字符串MD5 (string str美元[,bool raw_output美元=false)

参数

str ,,原始字符串。

raw_output ,,如果可选的raw_output被设置为真,那么MD5报文摘要将以16字节长度的原始二进制格式返回。

这是一种不可逆加密,执行如下的代码

$密码=& # 39;123456 & # 39;;
回声MD5(密码)美元;
得到结果是e10adc3949ba59abbe56e057f20f883e

<强> 2。Crype加密
字符串墓穴(string str美元[string盐美元])

crypt()返回一个基于标准UNIX DES算法或系统上其他可用的替代算法的散列字符串。

参数

str ,,待散列的字符串。

salt ,,可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。

这是也一种不可逆加密,执行如下的代码

代码如下:


$密码=& # 39;123456 & # 39;;
$盐=皌est";//只取前两个
回声墓穴(密码,盐美元);

得到的结果是teMGKvBPcptKo

使用自动盐值的例子如下:

代码如下:


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

执行结果是输出密码验证!

以不同散列类型使用crypt()的例子如下:

代码如下:


如果(CRYPT_STD_DES==1) {
,,,回声& # 39;标准DES: & # 39;。crypt (& # 39; rasmuslerdorf& # 39; & # 39; rl # 39;)。“\ n"
}
如果(CRYPT_EXT_DES==1) {
,,,回声& # 39;扩展的DES: & # 39;。crypt (& # 39; rasmuslerdorf& # 39; & # 39; _J9 . . rasm& # 39;)。“\ n"
}
如果(CRYPT_MD5==1) {
,,,回声& # 39;MD5:,,,,,,,,,& # 39;。crypt (& # 39; rasmuslerdorf& # 39; & # 39; 1美元rasmusle & # 39;美元)。“\ n"
}
如果(CRYPT_BLOWFISH==1) {
,,,回声& # 39;河豚:,,,,& # 39;。crypt (& # 39; rasmuslerdorf& # 39; & # 39; $ 2 $ 07 usesomesillystringforsalt & # 39;美元)。“\ n"
}
如果(CRYPT_SHA256==1) {
,,,回声& # 39;sha - 256:,,,,,& # 39;。crypt (& # 39; rasmuslerdorf& # 39; & # 39; 5轮美元=5000 usesomesillystringforsalt & # 39;美元)。“\ n"
}
如果(CRYPT_SHA512==1) {
,,,回声& # 39;sha - 512:,,,,,& # 39;。crypt (& # 39; rasmuslerdorf& # 39; & # 39; 6轮美元=5000 usesomesillystringforsalt & # 39;美元)。“\ n"
}

其结果如下

标准DES: rl.3StKT。4 t8m
扩展DES: _J9 . . rasmBYk8r9AiWNc
MD5:,,,,,,,,,1美元rasmusle rISCgZzpwk3UhDidwXvin0美元
河豚:,,,,2美元一个07 usesomesillystringfore2uDLvp1Ii2e.美元/U9C8sBjqp8I90dH6hi
sha - 256:,,,,,5轮美元=5000 usesomesillystri KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH美元/Tp.6
sha - 512:,,,,,6轮美元=5000 usesomesillystri D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO美元。ChWQW21
在crypt()函数支持多重散列的系统上、下面的常量根据相应的类型是否可用被设置为0或1:

CRYPT_STD_DES -基于标准DES算法的散列使用“。/0-9A-Za-z"字符中的两个字符作为盐值。在盐值中使用非法的字符将导致crypt()失败。
CRYPT_EXT_DES -扩展的基于DES算法的散列,其盐值为9个字符的字符串,由1个下划线后面跟着4字节循环次数和4字节盐值组成。它们被编码成可打印字符,每个字符6位,有效位最少的优先0到63年被编码为“。/0-9A-Za-z"。在盐值中使用非法的字符将导致crypt()失败。
CRYPT_MD5 - MD5散列使用一个以1美元开始的12字符的字符串盐值。
CRYPT_BLOWFISH -河豚算法使用如下盐值:$ 2 $,一个两位成本参数,“$”以及64位由”。/0-9A-Za-z”中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致crypt()返回一个空字符串。两位成本参数是循环次数以2为底的对数,它的范围是04-31,超出这个范围将导致crypt()失败。
CRYPT_SHA256 - sha - 256算法使用一个以5美元开头的16字符字符串盐值进行散列。如果盐值字符串以“轮=& lt; N>美元”开的头,N的数字值将被用来指定散列循环的执行次数,这点很像河豚算法的成本参数。默认的循环次数是5000年最小是1000年最大是999999999。超出这个范围的N将会被转换为最接近的值。

在PHP项目中实现加密的方式有哪些