PHP加密扩展库Mcrypt安装和实例


Posted in PHP onNovember 10, 2013

mcrypt简单介绍
PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库Mcrypt和Mhash。
其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
mcrypt 是 php 里面重要的加密支持扩展库,linux环境下:该库在默认情况下不开启。window环境下:PHP>=5.3,默认开启mcrypt扩展。
1、Mcrypt()库的安装
mcypt是一个功能十分强大的加密算法扩展库。在标准的PHP安装过程中并没有把Mcrypt安装上,但PHP的主目录下包含了libmcrypt.dll文件,所以我们只用将PHP配置文件中的这行:extension=php_mcrypt.dll前面的分号去掉,然后重启服务器就可以使用这个扩展库了。
支持的算法和加密模式
Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示[1]加密算法
Mcrypt支持的算法有:
cast-128
gost
rijndael-128
twofish
arcfour
cast-256
loki97
rijndael-192
saferplus
wake
blowfish-compat
des
rijndael-256
serpent
xtea
blowfish
enigma
rc2
tripledes
加密模式
Mcrypt支持的加密模式有:
cbc
cfb
ctr
ecb
ncfb
nofb
ofb
stream
这些算法和模式在应用中要以常量来表示,写的时候加上前缀MCRYPT_和MCRYPT_来表示,如下面Mcrypt应用的

例子

DES算法表示为MCRYPT_DES;
ECB模式表示为MCRYPT_MODE_ECB;

<?php
$str = "我的名字是?一般人我不告诉他!"; //加密内容
$key = "key:111"; //密钥
$cipher = MCRYPT_DES; //密码类型
$modes = MCRYPT_MODE_ECB; //密码模式
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);//初始化向量
echo "加密明文:".$str."<p>";
$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); //加密函数
echo "加密密文:".$str_encrypt." <p>";
$str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); //解密函数
echo "还原:".$str_decrypt;
?>
 

运行结果:
加密明文:我的名字是?一般人我不告诉他!
加密密文: 锍??]??q???L 笑 ??"? ?
还原:我的名字是?一般人我不告诉他!
<1>由例子中可看到,使用PHP加密扩展库Mcrypt对数据加密和解密之前,首先创建了一个初始化向量,简称为iv。由 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);可见创建初始化向 量需要两个参数:size指定了iv的大小;source为iv的源,其中值MCRYPT_RAND为系统随机数。
<2>函数mcrypt_get_iv_size($cipher,$modes)返回初始化向量大小,参数cipher和mode分别指算法和加 密模式。
<3>加密函数$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); 该函数的5个参数分 别如下:cipher——加密算法、key——密钥、data(str)——需要加密的数据、mode——算法模式、 iv——初始化向量
<4>解密函数 mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); 该函数和加密函数的参数几乎 一样,唯一不同的是data,也就是说data为需要解密的数据$str_encrypt,而不是原始数据$str。
注:加密和解密函数中的参数cipher、key和mode必须一一对应,否则数据不能被还原

总结
mcrypt库常量
Mcrypt库支持20多种加密算法和8种加密模式。可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来查看。

PHP 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
PHP的面试题集
Nov 19 PHP
PHP操作文件方法问答
Mar 16 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
php whois查询API制作方法
Jun 23 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
php静态文件生成类实例分析
Jan 03 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
浅析PHP数据导出知识点
Feb 17 PHP
php中autoload的用法总结
Nov 08 #PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 #PHP
php旋转图片90度的方法
Nov 07 #PHP
提高PHP编程效率的方法
Nov 07 #PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 #PHP
php获取汉字首字母的函数
Nov 07 #PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 #PHP
You might like
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
20招让你的Python飞起来!
2016/09/27 Python
Python中字典和集合学习小结
2017/07/07 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
python 默认参数相关知识详解
2019/09/18 Python
Python3监控疫情的完整代码
2020/02/20 Python
python是怎么被发明的
2020/06/15 Python
python中如何设置代码自动提示
2020/07/15 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
个人优缺点自我评价
2014/01/27 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
班级安全教育实施方案
2014/02/23 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
python常见的占位符总结及用法
2021/07/02 Python