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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP调用三种数据库的方法(1)
Oct 09 PHP
php日历[测试通过]
Mar 27 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
thinkPHP查询方式小结
Jan 09 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP fclose函数用法总结
Feb 15 PHP
php微信扫码支付 php公众号支付
Mar 24 PHP
PHP容器类的两种实现方式示例
Jul 24 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
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
js 对象是否存在判断
2009/07/15 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
详解webpack2+React 实例demo
2017/09/11 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python操作日期和时间的方法
2014/03/11 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Python FFT合成波形的实例
2019/12/04 Python
Numpy 多维数据数组的实现
2020/06/18 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
中文专业毕业生自荐信
2013/10/28 职场文书
生物制药专业求职信
2014/03/11 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
迟到检讨书
2015/01/26 职场文书
导游词格式
2015/02/13 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android