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 相关文章推荐
E路文章系统PHP
Dec 11 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP实现多图片上传类实例
Jul 26 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 PHP
PHP+MySql实现一个简单的留言板
Jul 19 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
PHP fprintf()函数用法讲解
2019/02/16 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python开发简易版在线音乐播放器
2017/03/03 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
通过Python实现一个简单的html页面
2020/05/16 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
欢送退休感言
2014/02/08 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
详解Java实践之建造者模式
2021/06/18 Java/Android
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
vue+echarts实现多条折线图
2022/03/21 Vue.js
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
vue实现拖拽交换位置
2022/04/07 Vue.js