PHP的加密主要有4种方法,除此之外还有一种是URL的加密和解密。希望可以对你们开发有用。
顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了。
笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2
一、md5()加密技术
语法:
string md5(string $str[,bool $raw_output=false]):计算str的md5散列值
$str:原始字符串
$raw_output:如果可选的raw_output被设置为true,那么md5报文摘要将以16字节长度的原始二进制格式返回。返回以32位字符十六进制数字形式返回散列值。
注意:md5是不可逆的,所以只能强制解码。意思是加密了之后不可以通过其他函数进行解析出密码,只能通过第三方匹配数据库的32位字符解析出对应的原字符。
解密网站:http://www.cmd5.com/
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php header( "content-type:text/html;charset='utf8'" ); //设置编码 echo md5( "dfa" ); //1b014086a5cf92eb3238d0d45c8c61a4 echo "<br>" ; echo md5( "dfa" , $raw_output =true); //输出: @��ϒ�28���a�5oWV6K++572RLWtpbg== $str =1; echo md5(md5( $str )); //可以进行多次加密 if ( $str ){ echo "注册成功,3秒钟后跳转到登录页面" ; echo "<meta http-equiv='refresh' content='3;url=login.html'/>" ; //3秒后就刷新一次页面,然后跳转到login.html } else { echo "注册失败,请重新注册" ; echo "<meta http-equiv='refresh' content='1;url=reg.html'/>" ; } ?> |
二、crypt加密算法
语法:
string crypt(string $str[,string $salt]);
返回一个基于标准UNIX DES算法或系统上其它可用的替代算法的散列字符串。
$str:需要机密的明文
$salt:加密时的干扰串,使编码更安全
注意:
如果加密时没有加上这个$salt参数,将随机生成一个干扰串,否则刷新加密密文不变。
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php echo crypt( "imooc" ); echo "<hr/>" ; echo crypt( "imooc" , 'cq' ); //可以在生成的32位UNIX文前加th两个字符 echo "<hr/>" ; if (CRYPT_STD_DES){ echo "DES标准算法:" .crypt( "leohengchun" , "this is test" ); } echo "<hr/>" ; if (CRYPT_MD5){ echo "MD5加密:" .crypt( "leohengchun" , '$1$cdsaf$' ); //一定要写成$1$... } echo "<hr/>" ; if (CRYPT_MD5){ echo "MD5加密:" .crypt( "leochun" , '$1$xshowsd dfds$' ); } ?> |
三、sha1()加密算法
语法:
string sha1(string $str[,bool $raw_output=false]):计算字符串的sha1散列值
$str:加密的字符串
$raw_output:如果可选的raw_output参数被设置为TRUE,那么sha1摘要将以20字符长度的原始格式返回,否则返回值是一个40字符长度的十六进制数字。
返回sha1散列值字符串。
实例:
1
2
3
4
5
6
7
8
9
10
|
<?php echo sha1( "leohc" ); echo "<hr/>" ; echo sha1( "leohc" ,true); //加了ture 生成的是:n��7�_#B���[�BѰ�9j echo "<hr/>" ; echo sha1( "admin" ); echo "<hr/>" ; echo sha1(md5( "admin" ,true)); ?> |
四、URL编码加密技术
1.urlencode(string $str):编码URL字符串
$str:要编码的字符串
返回值:返回编码后的字符串
2.urldecode(string $str):解码已编码的URL字符串。
$str:要解码的字符串
返回值:返回解码后的字符串
编码规范:此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
3.rawurlencode(string $str):按照RFC1738对URL进行编码
$str:要编码的URL
返回值:返回字符串,把空格编码为%20
4.rawurldecode(string $str):对已编码的URL字符串进行解码
$str:要解码的URL
返回值:返回字符串,此字符串中百分号%后跟两位十六进制的序列都将被替换成原义字符
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<?php /* 原码 转换编码 ? %3F = %3D 空格 + % %25 & %26 %5C */ $str = "h e l lo world" ; echo urlencode( $str ); echo "<hr/>" ; $str = "urlencode.php?username=1+3%4&imooc&king#or1=1 " ; echo urlencode( $str ); echo "<hr/>" ; $urlencode =urlencode( $str ); echo urldecode( $urlencode ); //用来解码 echo "<hr/>" ; if (! empty ( $_GET )){ print_r( $_GET ); } echo '<a href="md5.php?username=imooc&king&age=2">hello</a>' ; echo "<hr/>" ; $username = "imooc&king" ; $queryString = "username=" .urlencode( $username ). "&age=2" ; echo "<a href='md5.php?{$queryString}'>test</a>" ; echo "<hr/>" ; echo urldecode( "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=site888_3_pg&wd=%E7%99%BE%E5%BA%A6%E4%BA%91&oq=crypt&rsv_pq=fac4a3dc0002be07&rsv_t=16d5wj9i3VPccyU6g9qIm86QNweuVYvCtNwPZ8u27y%2BEOCmwYlgt7irSlH5hePjE8Ug5&rsv_enter=1&rsv_sug3=10&rsv_sug1=3&rsv_sug7=100&sug=%E7%99%BE%E5%BA%A6%E4%BA%91&rsv_n=1&bs=crypt" ); echo "<hr/>" ; echo urlencode( "墨客我" ); //%E5%A2%A8%E5%AE%A2%E6%88%91 echo "<hr/>" ; echo urlencode( "this is a test" ); //this+is+a+test echo "<hr/>" ; echo rawurlencode( "this is test" ); //this%20is%20test echo "<hr/>" ; echo rawurlencode( "this%20is%20a%20test" ); //this%2520is%2520a%2520test echo "<hr/>" ; echo rawurldecode( "this+is+a+test" ); //this+is+a+test echo "<hr/>" ; echo urldecode( "this+is+a+test" ); //this is a test ?> |
五、Base64信息编码加密技术
1.base64_encode(string $data):使用base64对data进行编码
$data:要编码的数据
2.base64_decode(string $data[,bool $strict=false]):对使用MIME base64编码的数据进行解码
$strict:如果输入的数据超出了base64字母表,则返回false;
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?php $data = "慕课网-kin" ; echo base64_encode ( $data ); echo "<hr/>" ; echo base64_decode ( "5oWV6K++572RLWtpbg==" ); echo "<hr/>" ; //图片的加密和转化 echo base64_encode ( "<img src='url.png'>" ); //加密 echo base64_decode ( "PGltZyBzcmM9J3VybC5wbmcnPg==" ); //解码 $filename = "url.png" ; //加密 $data = file_get_contents ( $filename ); echo base64_encode ( $data ); //加密 可以生成一串ascii码 echo "<img src='data:image/jpeg;base64,(图片base64代码)',alt=''>" ; ?> |
六、信息加密技术分类总结
信息加密:
1.单项散列加密
单项散列加密技术简介:
单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出进行计算而获得输入信息。
salt
↓
明文----->单向散列算法--密文--->
2.对称散列加密
对称加密技术介绍:
堆成加密时指加密和解密使用的密钥是同一个密钥或者可以互相推算。
salt 密钥
↓ ↓
明文----->加密算法--密文--->解密算法--明文-->
3.非对称散列加密
非对称加密和解密使用的密钥不是同一个密钥,其中一个对外公开,被称作公钥,另一个只有所有者知道。
加密密钥 解密密钥
↓ ↓
明文----->加密算法--密文--->解密算法--明文-->
希望在开发过程中有帮助。
附上笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2