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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
用文本作数据处理
Oct 09 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 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 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php基础教程
2015/08/26 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
讲解Python中的递归函数
2015/04/27 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
美国网上花店:JustFlowers
2017/02/12 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
工程招投标邀请书
2014/01/30 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
艺术教育实施方案
2014/05/03 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL