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+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
基于PHP静态类的原罪详解
May 06 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP常用编译参数中文说明
Sep 27 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
php准确计算复活节日期的方法
Apr 18 PHP
Yii rules常用规则示例
Mar 15 PHP
全面了解PHP中的全局变量
Jun 17 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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添加MySQL数据记录代码
2008/06/07 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
PHP实现简单登录界面
2019/10/23 PHP
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
python简单操作excle的方法
2018/09/12 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
表彰先进集体通报
2014/01/12 职场文书
自我推荐信范文
2014/05/09 职场文书
2014年车间工作总结
2014/11/21 职场文书
喋血孤城观后感
2015/06/08 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Python爬虫之爬取二手房信息
2021/04/27 Python
SQL注入详解及防范方法
2021/12/06 MySQL
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers