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安装问题
Oct 09 PHP
php巧获服务器端信息
Dec 06 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php中$this-&amp;gt;含义分析
Nov 29 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP实现限制域名访问的实现代码(本地验证)
Sep 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获取网址的顶级域名函数代码
2012/09/24 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
xmlHTTP实例
2006/10/24 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
python编写分类决策树的代码
2017/12/21 Python
python的继承知识点总结
2018/12/10 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
CSS3 文字动画效果
2020/11/12 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
学生档案自我鉴定
2013/10/07 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书