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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php编写简单的文章发布程序
Jun 18 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
php反射学习之依赖注入示例
Jun 14 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打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
javascript表单验证大全
2015/08/12 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python中转换角度为弧度的radians()方法
2015/05/18 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
python获取整个网页源码的方法
2020/08/03 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
保护环境倡议书范文
2014/05/13 职场文书
机械工程师岗位职责
2014/06/16 职场文书
推普周活动总结
2014/08/28 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
工会工作个人总结
2015/03/03 职场文书
环境卫生标语
2015/08/03 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
java解析XML详解
2021/07/09 Java/Android