龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

支持中文的php加密解密类

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
<无详细内容>
<?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';
}
?>

2. [代码][PHP]代码     跳至 [1] [2] [全屏预览]

使用方法:

<?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 );

?>
精彩图集

赞助商链接