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数据库开发知多少
Oct 09 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
PHP培训要多少钱
Jun 06 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 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
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
深入PHP数据加密详解
2013/06/18 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
js 可拖动列表实现代码
2011/12/13 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
Augularjs-起步详解
2016/07/08 Javascript
js常用DOM方法详解
2017/02/04 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
Python 常用 PEP8 编码规范详解
2017/01/22 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
python去除扩展名的实例讲解
2018/04/23 Python
Python列表切片常用操作实例解析
2019/12/16 Python
django从后台返回html代码的实例
2020/03/11 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
大二学生学习个人自我评价
2014/01/19 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
Minikube搭建Kubernetes集群
2022/03/31 Servers