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脚本代码
Feb 19 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
设定php简写功能的方法
Nov 28 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
从零学Python之hello world
2014/05/21 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python实现简单颜色识别程序
2020/02/19 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
企业行政文员岗位职责
2013/12/03 职场文书
课程改革实施方案
2014/03/16 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
经管应届生求职信范文
2014/05/18 职场文书
2014年外联部工作总结
2014/11/17 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
增值税发票丢失证明
2015/06/19 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang
win sever 2022如何占用操作主机角色
2022/06/25 Servers
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server
Go gorilla/sessions库安装使用
2022/08/14 Golang
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技