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 相关文章推荐
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
使用 php4 加速 web 传输
Oct 09 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
php快递单号查询接口使用示例
May 05 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
php获取当月最后一天函数分享
Feb 02 PHP
php下载文件超时时间的设置方法
Oct 06 PHP
Yii框架数据模型的验证规则rules()被执行的方法
Dec 02 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
May 27 PHP
PHP批斗大会之缺失的异常详解
Jul 09 PHP
通过PHP实现获取访问用户IP
May 09 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使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
js实现简单的验证码
2015/12/25 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python如何为创建大量实例节省内存
2018/03/20 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
详解用python写一个抽奖程序
2019/05/10 Python
Python实现图片添加文字
2019/11/26 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
新郎新娘婚礼答谢词
2014/01/11 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
党员思想汇报材料
2014/12/19 职场文书
论文致谢词范文
2015/05/14 职场文书
信仰观后感
2015/06/03 职场文书
教师师德工作总结2015
2015/07/22 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python