Home > php教程 > PHP源码 > DZX1.5加解密函数authcode分享

DZX1.5加解密函数authcode分享

PHP中文网
Release: 2016-05-25 17:13:37
Original
1081 people have browsed it

DZX1.5加解密函数authcode分享

<?php
$authkey = &#39;&#39;;
/**
 * @param string $string: 输入的需要加密(或解密)的明文(或密文)
 * @param string $operation: &#39;DECODE&#39;或其它,其中默认表示解密,输入其它表示加密
 * @param string $key: 加解密密钥
 * @param int $expiry: 有效期
 */
function authcode($string, $operation = &#39;DECODE&#39;, $key = &#39;&#39;, $expiry = 0) {
	global $authkey;
	$ckey_length = 4;
	$key = md5($key != &#39;&#39; ? $key : $authkey);
	$keya = md5(substr($key, 0, 16));
	$keyb = md5(substr($key, 16, 16));
	$keyc = $ckey_length ? ($operation == &#39;DECODE&#39; ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : &#39;&#39;;

	$cryptkey = $keya.md5($keya.$keyc);
	$key_length = strlen($cryptkey);

	$string = $operation == &#39;DECODE&#39; ? base64_decode(substr($string, $ckey_length)) : sprintf(&#39;%010d&#39;, $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
	$string_length = strlen($string);

	$result = &#39;&#39;;
	$box = range(0, 255);

	$rndkey = array();
	for($i = 0; $i <= 255; $i++) {
		$rndkey[$i] = ord($cryptkey[$i % $key_length]);
	}

	for($j = $i = 0; $i < 256; $i++) {
		$j = ($j + $box[$i] + $rndkey[$i]) % 256;
		$tmp = $box[$i];
		$box[$i] = $box[$j];
		$box[$j] = $tmp;
	}

	for($a = $j = $i = 0; $i < $string_length; $i++) {
		$a = ($a + 1) % 256;
		$j = ($j + $box[$a]) % 256;
		$tmp = $box[$a];
		$box[$a] = $box[$j];
		$box[$j] = $tmp;
		$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
	}

	if($operation == &#39;DECODE&#39;) {
		if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
			return substr($result, 26);
		} else {
			return &#39;&#39;;
		}
	} else {
		return $keyc.str_replace(&#39;=&#39;, &#39;&#39;, base64_encode($result));
	}

}
$str = &#39;1234&#39;;
$key = &#39;1234&#39;;
echo "明文:".$str;
echo "
";
echo "密钥:".$key;
$encode = authcode($str,&#39;11&#39;,$key);
echo "
";
echo "加密后的密文:".$encode;
echo "
";
$decode = authcode($encode,&#39;DECODE&#39;,$key);
echo "解密后的明文:".$decode;
/*End of php*/
Copy after login

                   


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template