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 str_pad 函数用法简介
Jul 11 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
使用PHP编写的SVN类
Jul 18 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 PHP
PHP7新功能总结
Apr 14 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-fpm配置详解
2014/02/12 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
Python简单实现enum功能的方法
2016/04/25 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
python检索特定内容的文本文件实例
2018/06/05 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Python操作qml对象过程详解
2019/09/26 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
Django celery异步任务实现代码示例
2020/11/26 Python
环境科学毕业生自荐信
2013/11/21 职场文书
学生保证书范文
2014/04/28 职场文书
驾驶员培训方案
2014/05/01 职场文书
工程承诺书怎么写
2014/05/24 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
Java实现带图形界面的聊天程序
2022/06/10 Java/Android