1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > shal+php 学习笔记---PHP中几种加密算法(MD5 shal base64_encode等)

shal+php 学习笔记---PHP中几种加密算法(MD5 shal base64_encode等)

时间:2023-10-28 18:40:50

相关推荐

shal+php 学习笔记---PHP中几种加密算法(MD5 shal base64_encode等)

PHP中有多种加密算法。

1.md5()—–不可逆,无解密算法

md5(string $str[,bool $raw_output = false|true]);

参数:

$str:待加密的字符串

$raw_output:可选参数为true或false,两者区别是:

true加密后密文为16位二进制格式字符;

false加密后密文为32位十六进制格式字符。若此处没有参数,则默认为false方式。

eg:

$num = "1234567adc89";

$a = md5($num,true);

$b = md5($num);

$a_len = strlen($a);

$b_len = strlen($b);

echo "使用md5方式,参数为true的加密 :

".$a." 字符长度长度为".$a_len;

echo "

使用md5方式,参数为false的加密:

".$b." 字符长度长度为".$b_len;

页面显示结果为:

2. crypt()—不可逆,无解密算法

crypt(string $str, string [salt]);

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

参数:

$str:待加密字符串。

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

eg:

$num = "1234567adc89";

$c = crypt($num);

$c_len = strlen($c);

echo "

使用crypt方式加密 :

".$c." 字符长度长度为".$c_len;

页面执行结果:

每次页面刷新后,加密后的字符都会发生变化。

这个算法的散列值有多个,用法、含义也很大不同。因为是初学阶段,用处也不多,所以就不去深究啦。在网上看见一篇博文解释得更详细,大家有兴趣了解更改可以戳戳哦php基于crypt的加密实例

3.sha1()—不可逆,无解密算法

string sha1 (string $str [, bool $raw_output = false ] )

参数:

$str:待加密字符串

$raw_output: 可选参数是true|fasle。

true:加密后密文为 20 位字符长度。

flase:加密后密文是 40 位字符长度的十六进制字符串,若此处未设置参数,则默认false。

eg:

$num = "1234567adc89";

$d = sha1($num);

$d_len = strlen($d);

echo "

使用sha1方式加密 :

".$d." 字符长度长度为".$d_len;

页面执行结果:

以上几种虽然是不可逆加密,但是也可以根据查字典的方式去解密。请戳在线解密查看解密哦。

上面的都是不可逆加密算法,下面几个将是可逆加密算法。一般成对出现。

4.URL加/解密—可逆加密算法

string urlencode ( string $str ) //用于加密

string urldecode ( string $encoded_str ) //用于解密

只有一个参数,即待加/解密的字符串。

urlencode()函数用于将字符串以URL编码,同时它还便于将变量传递给下一页。

原理是将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。

urldecode()函数则是将字符串以URL解码。

eg:

$num = "未来1997Lilian你好";

$e = urlencode($num);

$e_len = strlen($e);

echo "

使用urlencode方式加密 :

".$e." 字符长度长度为".$e_len."

";

$ee = urldecode($e);

$ee_len = strlen($ee);

echo "

待解密字符串:".$e;

echo "

使用urldecode方式解密 :

".$ee." 字符长度长度为".$ee_len;

网页结果显示:

可以看到,在密文中,数字和字母并没有被加密。

因为urlencode()适用于统一资源标识符(URI)的编码,也用于为"application/x-www-form-urlencoded" MIME准备数据, 因为它用于通过HTTP的请求操作(request)提交HTML表单数据。

5.base64_ 加/解密—可逆加密算法

string base64_encode ( string $data ) //用于加密

string base64_decode ( string $encoded_data [, bool $strict = false ] ) //用于解密

base64_encode()使用 base64 对 data 进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。

Base64-encoded 数据要比原始数据多占用 33% 左右的空间

base64_decode()

参数

$encoded_data : 编码过的数据。

strict : 如果输入的数据超出了 base64 字母表,则返回 FALSE对 encoded_data 进行解码,返回原始数据,失败则返回 FALSE。返回的数据可能是二进制的。

eg:

$num = "未来1997Lilian你好";

$f = base64_encode($num);

$f_len = strlen($f);

echo "

使用base64_encode方式加密 :

".$f." 字符长度长度为".$f_len."

";

$ff = base64_decode($f);

$ff_len = strlen($ff);

echo "

待解密字符串:".$f;

echo "

使用base64_decode方式解密 :

".$ff." 字符长度长度为".$ff_len;

网页结果:

这里待加密的字符串和上面用urlencode加密的字符串是一样的,但明显看到加密结果不同。

以上是php中常用的一些加密方法,正在学习,所以稍作整理,方便阅读与理解。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。