PHP mcrypt可逆加密算法分析


Posted in PHP onJuly 19, 2011

数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据。对于不需要还原为原始数据的信息我们可以使用MD5、sha1等不可逆加密算法对数据进行加密处理,但对于交易信息等需要还原为原始数据的重要信息则必须使用可还原的加密算法进行加密了。当然你可以自己写一个可逆加密的算法进行加密和解密计算。本文中我们介绍的是使用 mcrypt模块进行加密解密操作。
Mcrypt的优点不仅仅在于其提供的加密算法较多,在windows下随PHP包一起发布,还在于它可以对数据进行加/解密处理,此外,它还提供了包括DES算法在内的35种处理数据用的函数。

/** 
+----------------------------------------------------- 
* Mcrypt 加密/解密 
* @param String $date 要加密和解密的数据 
* @param String $mode encode 默认为加密/decode 为解密 
* @return String 
* @author zxing@97md.net Mon Sep 14 22:59:28 CST 2009 
+----------------------------------------------------- 
* @example 
*/ 
function ZxingCrypt($date,$mode = 'encode'){ 
$key = md5('zxing');//用MD5哈希生成一个密钥,注意加密和解密的密钥必须统一 
if ($mode == 'decode'){ 
$date = base64_decode($date); 
} 
if (function_exists('mcrypt_create_iv')){ 
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
} 
if (isset($iv) && $mode == 'encode'){ 
$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv); 
}elseif (isset($iv) && $mode == 'decode'){ 
$passcrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv); 
} 
if ($mode == 'encode'){ 
$passcrypt = base64_encode($passcrypt); 
} 
return $passcrypt; 
}

别的网友的代码
<?php 
$td = mcrypt_module_open(MCRYPT_DES,'','ecb',''); //使用MCRYPT_DES算法,ecb模式 
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
$ks = mcrypt_enc_get_key_size($td); 
$key = "ery secret key";//密钥 
$key = substr(md5($key), 0, $ks); 
mcrypt_generic_init($td, $key, $iv); //初始处理 
//加密 
$encrypted = mcrypt_generic($td, 'This is very important data'); 
//结束处理 
mcrypt_generic_deinit($td); 
//初始解密处理 
mcrypt_generic_init($td, $key, $iv); 
//解密 
$decrypted = mdecrypt_generic($td, $encrypted); 
//结束 
mcrypt_generic_deinit($td); 
mcrypt_module_close($td); 
//解密后,可能会有后续的\0,需去掉 
echo trim($decrypted) . "\n"; 
?>
PHP 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
PHP 常见郁闷问题答解
Nov 25 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
php异步多线程swoole用法实例
Nov 14 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php字符串的替换,分割和连接方法
May 23 PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP中date()日期函数有关参数整理
Jul 19 #PHP
php URL验证正则表达式
Jul 19 #PHP
PHP中static关键字原理的学习研究分析
Jul 18 #PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 #PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 #PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 #PHP
PHP中英混合字符串截取函数代码
Jul 17 #PHP
You might like
2.PHP入门
2006/10/09 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
跟老齐学Python之for循环语句
2014/10/02 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
python实现最速下降法
2020/03/24 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
pandas针对excel处理的实现
2021/01/15 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
网络安全方面的面试题
2015/11/04 面试题
明信片寄语大全
2014/04/08 职场文书
合作经营协议书范本
2014/09/16 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS