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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
php木马攻击防御之道
Mar 24 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
destoon后台网站设置变成空白的解决方法
Jun 21 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
php利用事务处理转账问题
Apr 22 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
php设计模式之单例模式代码
Jun 11 PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
PHP的介绍以及优势详细分析
Sep 05 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
缅甸的咖啡简史
2021/03/04 咖啡文化
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
详解python配置虚拟环境
2019/04/08 Python
Python中print和return的作用及区别解析
2019/05/05 Python
基于python使用tibco ems代码实例
2019/12/20 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
经理任命书模板
2014/06/06 职场文书
立项申请报告范本
2015/05/15 职场文书
大学副班长竞选稿
2015/11/21 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
压缩Redis里的字符串大对象操作
2021/06/23 Redis
Python学习之迭代器详解
2022/04/01 Python