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 相关文章推荐
简单采集了yahoo的一些数据
Feb 14 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
php汉字转拼音的示例
Feb 27 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
php查找字符串中第一个非0的位置截取
Feb 27 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
浅谈php调用python文件
Mar 29 PHP
laravel框架与其他框架的详细对比
Oct 23 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
Python常用正则表达式符号浅析
2014/08/13 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Django在win10下的安装并创建工程
2017/11/20 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
pymysql模块的操作实例
2019/12/17 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
2014的自我评价
2014/01/13 职场文书
小学教师听课制度
2014/02/01 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
电子商务专业求职信
2014/07/10 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL