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 变量定义和变量替换的方法
Jul 30 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
解析crontab php自动运行的方法
Jun 24 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
php中JSON的使用方法
Apr 30 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
laravel 实现用户登录注销并限制功能
Oct 24 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 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 接口类与抽象类的实际作用
2009/11/26 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
JavaScript WeakMap使用详解
2021/02/05 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Python解惑之True和False详解
2017/04/24 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
您的网上新华书店:文轩网
2016/08/24 全球购物
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
黄金搭档广告词
2014/03/21 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
党课培训心得体会
2014/09/02 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
商品陈列协议书
2014/09/29 职场文书
加薪申请报告范本
2015/05/15 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android