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版
Apr 20 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
Yii框架登录流程分析
Dec 03 PHP
php实现字符串反转输出的方法
Mar 14 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 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中使用灵巧的体系结构
2006/10/09 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
js+css实现全屏侧边栏
2020/06/16 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
门卫班长岗位职责
2013/12/15 职场文书
大学生标准自荐书
2014/06/15 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
文明上网主题班会
2015/08/14 职场文书
《司马光》教学反思
2016/02/22 职场文书
golang json数组拼接的实例
2021/04/28 Golang