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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
PHP中比较时间大小实例
Aug 21 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
laravel 判断查询数据库返回值的例子
Oct 11 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 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
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
python从入门到精通(DAY 1)
2015/12/20 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
新任教师自我鉴定
2014/02/24 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
优秀会计求职信
2014/07/04 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python