支持中文的php加密解密类代码


Posted in PHP onNovember 27, 2011

php代码类:

<?php 
/** 
* Copyright (c) 2011 - 01 XatuDream 
* XatuDream All Rights Reserved. 
* Support:185390516.qzone.qq.com 
* QQ:185390516 
* Author:Lau Version:1.01 
* Date:2010-08-12 09:28:32 
*/ 
! defined ( 'WORKSPACE' ) && exit ( "Access Denied !" ); 
class MD5Crypt { 
/** 
* Enter description here ... 
* @param unknown_type $str 
* @return string 
*/ 
public final static function mdsha($str) { 
$code = substr ( md5 ( $str ), 10 ); 
$code .= substr ( sha1 ( $str ), 0, 28 ); 
$code .= substr ( md5 ( $str ), 0, 22 ); 
$code .= substr ( sha1 ( $str ), 16 ) . md5 ( $str ); 
return self::chkToken () ? $code : null; 
} 
/** 
* Enter description here ... 
* @param unknown_type $param 
*/ 
private final static function chkToken() { 
return true; 
} 
/** 
* Enter description here ... 
* @param unknown_type $txt 
* @param unknown_type $encrypt_key 
* @return Ambigous <string, boolean> 
*/ 
private final static function keyED($txt, $encrypt_key) { 
$encrypt_key = md5 ( $encrypt_key ); 
$ctr = 0; 
$tmp = ""; 
for($i = 0; $i < strlen ( $txt ); $i ++) { 
if ($ctr == strlen ( $encrypt_key )) 
$ctr = 0; 
$tmp .= substr ( $txt, $i, 1 ) ^ substr ( $encrypt_key, $ctr, 1 ); 
$ctr ++; 
} 
return $tmp; 
} 
/** 
* Enter description here ... 
* @param unknown_type $txt 
* @param unknown_type $key 
* @return string 
*/ 
public final static function Encrypt($txt, $key) { 
srand ( ( double ) microtime () * 1000000 ); 
$encrypt_key = md5 ( rand ( 0, 32000 ) ); 
$ctr = 0; 
$tmp = ""; 
for($i = 0; $i < strlen ( $txt ); $i ++) { 
if ($ctr == strlen ( $encrypt_key )) 
$ctr = 0; 
$tmp .= substr ( $encrypt_key, $ctr, 1 ) . (substr ( $txt, $i, 1 ) ^ substr ( $encrypt_key, $ctr, 1 )); 
$ctr ++; 
} 
$_code = md5 ( $encrypt_key ) . base64_encode ( self::keyED ( $tmp, $key ) ) . md5 ( $encrypt_key . $key ); 
return self::chkToken () ? $_code : null; 
} 
/** 
* Enter description here ... 
* @param unknown_type $txt 
* @param unknown_type $key 
* @return Ambigous <string, boolean> 
*/ 
public final static function Decrypt($txt, $key) { 
$txt = self::keyED ( base64_decode ( substr ( $txt, 32, - 32 ) ), $key ); 
$tmp = ""; 
for($i = 0; $i < strlen ( $txt ); $i ++) { 
$md5 = substr ( $txt, $i, 1 ); 
$i ++; 
$tmp .= (substr ( $txt, $i, 1 ) ^ $md5); 
} 
return self::chkToken () ? $tmp : null; 
} 
/** 
* Enter description here ... 
* @var unknown_type 
*/ 
private static $_key = 'lau'; 
} 
?>

使用方法:
<?php //Code Start 
/** 
* Copyright (c) 2011 XatuDream 
* XatuDream All Rights Reserved. 
* Support:185390516.qzone.qq.com 
* QQ:185390516 
* Author:LoveCrystal Version:1.01 
* Date:2011-9-2 04:00:37 
*/ 
define ( 'WORKSPACE', '.' . DIRECTORY_SEPARATOR ); 
header ( "Content-Type: text/html; charset=utf-8" ); 
include_once 'Core/Library/MD5Crypt.class.php'; 
$a = MD5Crypt::Encrypt ( "A", 100 ); 
echo "EnCode:" . $a, "<br />"; 
echo "DeCode:" . MD5Crypt::Decrypt ( $a, 100 ); 
?>
PHP 相关文章推荐
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
php中的抽象方法和抽象类
Feb 14 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 PHP
php UBB 解析实现代码
Nov 27 #PHP
PHP高自定义性安全验证码代码
Nov 27 #PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
Nov 26 #PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 #PHP
php 团购折扣计算公式
Nov 24 #PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 #PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 #PHP
You might like
php 静态化实现代码
2009/03/20 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python文件的读写和异常代码示例
2017/10/31 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
工程部主管岗位职责
2013/11/17 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
入团介绍人意见范文
2015/06/04 职场文书
小学运动会入场词
2015/07/18 职场文书
领导新年致辞2016
2015/07/29 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers