PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)


Posted in PHP onJanuary 30, 2009
// +----------------------------------------------------------------------+ 
// | Willko Framework | 
// +----------------------------------------------------------------------+ 
// | Copyright (c) 2008-2009 Willko Cheng | 
// +----------------------------------------------------------------------+ 
// | Authors: Willko Cheng <willko@foxmail.com> | 
// +----------------------------------------------------------------------+ 
// $string 明文 或 密文 
// $isEncrypt 是否加密 
// $key 密匙 
// 采用SHA1生成密匙簿,超过300个字符使用ZLIB压缩 
function dencrypt($string, $isEncrypt = true, $key = KEY_SPACE) { 
if (!isset($string{0}) || !isset($key{0})) { 
return false; 
} $dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40); 
$fixedKey = hash('sha1', $key); 
$dynKeyPart1 = substr($dynKey, 0, 20); 
$dynKeyPart2 = substr($dynKey, 20); 
$fixedKeyPart1 = substr($fixedKey, 0, 20); 
$fixedKeyPart2 = substr($fixedKey, 20); 
$key = hash('sha1', $dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2); 
$string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40))); 
$n = 0; 
$result = ''; 
$len = strlen($string); 
for ($n = 0; $n < $len; $n++) { 
$result .= chr(ord($string{$n}) ^ ord($key{$n % 40})); 
} 
return $isEncrypt ? $dynKey . str_replace('=', '', base64_encode($n > 299 ? gzcompress($result) : $result)) : substr($result, 20, -20); 
}
PHP 相关文章推荐
MVC模式的PHP实现
Oct 09 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
thinkPHP查询方式小结
Jan 09 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
Symfony查询方法实例小结
Jun 28 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php如何实现数据库的备份和恢复
Nov 30 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 #PHP
php 动态多文件上传
Jan 18 #PHP
PHP $_SERVER详解
Jan 16 #PHP
php 删除数组元素
Jan 16 #PHP
php完全过滤HTML,JS,CSS等标签
Jan 16 #PHP
php array_flip() 删除数组重复元素
Jan 14 #PHP
PHP mkdir()定义和用法
Jan 14 #PHP
You might like
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
php跨站攻击实例分析
2014/10/28 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
PHP的几个常用加密函数
2016/02/03 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
Python创建模块及模块导入的方法
2015/05/27 Python
Python制作刷网页流量工具
2017/04/23 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
python机器学习实现决策树
2019/11/11 Python
python动态文本进度条的实例代码
2020/01/22 Python
Python如何获取文件路径/目录
2020/09/22 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
初三学习决心书
2014/03/11 职场文书
公司业务员岗位职责
2014/03/18 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
建筑管理专业求职信
2014/07/28 职场文书