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 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
php保存信息到当前Session的方法
Mar 16 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
php函数连续调用实例分析
Jul 30 PHP
php自定义函数转换html标签示例
Sep 29 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 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比较两个绝对时间的大小
2014/01/31 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
javascript 闭包疑问
2010/12/30 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
广告传媒专业应届生求职信
2014/03/01 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
武夷山导游词
2015/02/03 职场文书
自主招生专家推荐信
2015/03/26 职场文书
班级班风口号大全
2015/12/25 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python