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 相关文章推荐
PHP5常用函数列表(分享)
Jun 07 PHP
浅析php header 跳转
Jun 17 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
php自定义hash函数实例
May 05 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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 eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
js获取url参数的使用扩展实例
2007/12/29 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
flask中的wtforms使用方法
2018/07/21 Python
python集合是否可变总结
2019/06/20 Python
python文件读写代码实例
2019/10/21 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
城市精细化管理实施方案
2014/03/04 职场文书
2014年手术室工作总结
2014/11/26 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书