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中使用Oracle数据库(1)
Oct 09 PHP
PHP 遍历XP文件夹下所有文件
Nov 27 PHP
php 分库分表hash算法
Nov 12 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 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统计字符串中中英文字符的个数
2013/06/23 PHP
laravel 数据验证规则详解
2019/10/23 PHP
JavaScript变量声明详解
2014/11/27 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
Python实现大文件排序的方法
2015/07/10 Python
Python有序字典简单实现方法示例
2017/09/28 Python
python实现数据写入excel表格
2018/03/25 Python
python实现树形打印目录结构
2018/03/29 Python
Python for循环中的陷阱详解
2018/07/13 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
Linux操作面试题
2012/05/16 面试题
教师自我鉴定
2013/12/13 职场文书
农民致富事迹材料
2014/01/23 职场文书
考试没考好检讨书
2014/01/31 职场文书
幼儿园运动会入场词
2014/02/10 职场文书
企业安全生产标语
2014/06/06 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
初中体育课教学反思
2016/02/16 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL