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 相关文章推荐
建立动态的WML站点(一)
Oct 09 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
php发送post请求的三种方法
Feb 11 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
PHP中的流(streams)浅析
Jul 02 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
Swoole4.4协程抢占式调度器详解
May 23 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
laravel 实现划分admin和home 模块分组
Oct 15 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 HTML代码串 截取实现代码
2009/06/29 PHP
新手学习PHP的一些基础知识分享
2011/07/27 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
python实现静态服务器
2019/09/05 Python
浅析python内置模块collections
2019/11/15 Python
python入门之基础语法学习笔记
2020/02/08 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
公司活动策划方案
2014/01/13 职场文书
《长征》教学反思
2014/04/27 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
院系推荐意见
2015/06/05 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
vue实现列表垂直无缝滚动
2022/04/08 Vue.js
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫