PHP可逆加密/解密函数分享


Posted in PHP onSeptember 25, 2012

函数源码

function encrypt($data, $key) { 
$prep_code = serialize($data); 
$block = mcrypt_get_block_size('des', 'ecb'); 
if (($pad = $block - (strlen($prep_code) % $block)) < $block) { 
$prep_code .= str_repeat(chr($pad), $pad); 
} 
$encrypt = mcrypt_encrypt(MCRYPT_DES, $key, $prep_code, MCRYPT_MODE_ECB); 
return base64_encode($encrypt); 
} function decrypt($str, $key) { 
$str = base64_decode($str); 
$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB); 
$block = mcrypt_get_block_size('des', 'ecb'); 
$pad = ord($str[($len = strlen($str)) - 1]); 
if ($pad && $pad < $block && preg_match('/' . chr($pad) . '{' . $pad . '}$/', $str)) { 
$str = substr($str, 0, strlen($str) - $pad); 
} 
return unserialize($str); 
}

调用函数
$key = 'okyo.cn'; 
$data = array('id' => 100, 'username' => 'customer', 'password' => 'e10adc3949ba59abbe56e057f20f883e'); 
$snarr = serialize($data); 
$en = encrypt($data, $key); 
$de = decrypt($en, $key); 
echo "加密原型:"; 
print_r($data); 
echo " 
密钥:$key 加密结果:$en 
解密结果:"; 
print_r($de);
PHP 相关文章推荐
PHP在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
PHP 和 XML: 使用expat函数(三)
Oct 09 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
PHP 第三节 变量介绍
Apr 28 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP自毁程序(慎用)
Jul 09 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
PHP封装的完整分页类示例
Aug 21 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 #PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 #PHP
PHP获取网址的顶级域名函数代码
Sep 24 #PHP
ThinkPHP关联模型操作实例分析
Sep 23 #PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 #PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 #PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 #PHP
You might like
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
让python在hadoop上跑起来
2016/01/27 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
接受捐赠答谢词
2014/01/27 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
大学生交通专业求职信
2014/09/01 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
个人查摆剖析材料
2014/10/04 职场文书
解除施工合同协议书
2014/10/17 职场文书
行政处罚事先告知书
2015/07/01 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL