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 防恶意刷新实现代码
May 16 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
PHP最常用的正则表达式
Feb 13 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 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
介绍几个array库的新函数 php
2006/12/29 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
python发送伪造的arp请求
2014/01/09 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
详解Python如何生成词云的方法
2018/06/01 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
农村婚礼主持词
2014/03/13 职场文书
铁路安全事故反思
2014/04/26 职场文书
禁烟标语大全
2014/06/11 职场文书
村班子对照检查材料
2014/08/18 职场文书
婚庆答谢词
2015/01/04 职场文书
小学教师教学随笔
2015/08/14 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS