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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
php使用反射插入对象示例分享
Mar 11 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php程序内部post数据的方法
Mar 31 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 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上传图片、删除图片实现代码
2010/05/12 PHP
PHP 数组基础知识小结
2010/08/20 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
jquery tools之tooltip
2009/07/25 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
js数组操作常用方法
2014/05/08 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
python中的yield from语法快速学习
2020/11/06 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
军训拉歌口号
2014/06/13 职场文书
失职检讨书大全
2015/01/26 职场文书
四风之害观后感
2015/06/09 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers