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 存取 MySQL 数据库的一个例子
Oct 09 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
据说是雅虎的一份PHP面试题附答案
Jan 07 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
twig里使用js变量的方法
Feb 05 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
PHP常用字符串函数用法实例总结
Jun 04 PHP
一文搞懂php的垃圾回收机制
Jun 18 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
php新建文件自动编号的思路与实现
2011/06/27 PHP
分享php多功能图片处理类
2016/05/15 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
热点新闻滚动特效的js代码
2013/08/17 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
彻底解决Python包下载慢问题
2020/11/15 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
英语自荐信常用语句
2013/12/13 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
工程催款通知书
2015/04/17 职场文书
2015学校年度工作总结
2015/05/11 职场文书
毕业设计致谢语
2015/05/14 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL