PHP的加密方法汇总

摘要:
PHP有四种主要的加密方法。此外,还有另一种URL加密和解密方法。顺便说一句,我将打包一整套CSS3、PHP和MYSQL开发笔记,这些笔记是我稍后整理的,并将它们放在百度云上。如有必要,您可以到百度云下载,这样您就可以不用百度搜索直接翻笔记。˃2、 加密算法语法:stringcrypt;返回基于标准UNIXDES算法或系统上可用的其他替代算法的哈希字符串。

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="http://t.zoukankan.com/md5.php?username=imooc&king&age=2">hello</a>';
echo "<hr/>";
$username="imooc&king";
$queryString="username=".urlencode($username)."&age=2";
echo "<a href='http://t.zoukankan.com/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='http://t.zoukankan.com/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

免责声明:文章转载自《PHP的加密方法汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何通过业务过程,对指标管理体系进行设计?CentOS7.5 系统最小化安装与初始化配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTTP调用接口方法

Http调用第三方接口代码: /** * 房融界接口对接 * @return */ public Map<String,Object> frjRequest(){ String url="房融界提供的接口地址"; String result = ""; HttpPost httppost=new HttpPost(...

kafka消费组创建和删除原理

0.10.0.0版本的kafka的消费者和消费组已经不在zk上注册节点了,那么消费组是以什么形式存在的呢? 1 入口 看下kafka自带的脚本kafka-consumer-groups.sh,可见脚本调用了kafka.admin.ConsumerGroupCommand exec $(dirname $0)/kafka-run-class.sh kafka...

linux php安装扩展方法 查找配置文件

如何在linux中查看nginx、apache、php、mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档。这时该怎么判断找到正确的加载文件路径了。可以通过以下来判断 1、判断apache 首先执行命令找到httpd路径 ps aux | grep httpd 如httpd路径为 /usr/local/apache/bin/http...

uniapp支付宝小程序上传图片转base64

最近使用uniapp涉及到一个上传图片的功能,原本看官方文档api觉得没问题,正常开发, 1. 首先微信端没问题 uni.getFileSystemManager().readFile({ filePath: url, //选择图片返回的相对路径 encoding: "base64", //编码格式 succes...

k8s的yaml说明

理解k8s里的几个概念 Kubernetes 通过各种 Controller 来管理 Pod 的生命周期。为了满足不同业务场景,Kubernetes 开发了 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等多种 Controller。最常用的 Deployment用来建立Pod,以下是它的步骤 kube...

JavaEE-02 JSP数据交互01

学习要点 request对象 response对象 转发与重定向 session对象 include指令 课程回顾 需求描述:编写JSP页面,计算2000—3000年中存在几个闰年。 实现分析:判断闰年的算法写在方法boolean leapYear(int year)中。 提示:闰年——能够被4整除而不能被100整除,或者能够被400整除。 JSP...