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 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
一周让你学会PHP 不错的学习资料
Feb 06 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
php array的学习笔记
May 10 PHP
PHP 面向对象详解
Sep 13 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
PHP中大括号'{}'用法实例总结
Feb 08 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
PHP实现考试倒计时功能代码
Apr 16 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针对数字的加密解密类
2014/03/20 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
详解javascript void(0)
2020/07/13 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Django中modelform组件实例用法总结
2020/02/10 Python
利用python生成照片墙的示例代码
2020/04/09 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
如何用Lucene索引数据库
2016/02/23 面试题
工程造价与管理专业应届生求职信
2013/11/23 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
爱耳日活动总结
2014/04/30 职场文书
校长创先争优承诺书
2014/08/30 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
介绍信的格式
2015/01/30 职场文书
支行行长岗位职责
2015/02/15 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis