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 中的str_replace 函数总结
Apr 27 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
浅谈php的TS和NTS的区别
Mar 13 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实现下载CSS文件中的图片
2015/12/06 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
php测试kafka项目示例
2020/02/06 PHP
IE6 fixed的完美解决方案
2011/03/31 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
接口中的方法可以是abstract的吗
2015/07/23 面试题
数控技术与应用毕业生自荐信
2013/09/24 职场文书
无偿献血倡议书
2014/04/14 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
群众路线对照检查材料
2014/09/22 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书