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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
也谈截取首页新闻 - 范例
Oct 09 PHP
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
PHP 防恶意刷新实现代码
May 16 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
php多文件上传下载示例分享
Feb 20 PHP
PHP实现事件机制实例分析
Jun 26 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
ThinkPHP框架实现数据增删改
May 07 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 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
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
安装dbus-python的简要教程
2015/05/05 Python
全面理解Python中self的用法
2016/06/04 Python
python实时监控cpu小工具
2018/06/21 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
团委书记的竞聘演讲稿
2014/04/24 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书