-
-
//Reversible encryption function - function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { p>
$ckey_length = 4; // Random key length value is 0-32;
- // Adding a random key can make the ciphertext irregular, even if the original text and the key are exactly the same, the encryption The results will also be different every time, increasing the difficulty of cracking.
- // The larger the value, the greater the ciphertext change pattern. The ciphertext change = 16 to the power of $ckey_length
- // When this value is 0, no random key will be generated
- $key = md5($key ? $key : UC_KEY);
- $keya = md5(substr($key, 0, 16));
- $keyb = md5(substr($key, 16, 16));
- $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
$cryptkey = $keya .md5($keya.$keyc);
- $key_length = strlen($cryptkey);
$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length )) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
- $string_length = strlen($string );
$result = '';
- $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 == 'DECODE') {
- 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 '';
- }
- } else {
- return $keyc.str_replace( '=', '', base64_encode($result));
- }
- }
//Call example
- $string = authcode("Hello","ENCODE","HTML_TCCJ_AUTH") ;
- echo $string,'
';
- echo authcode($string,"DECODE","HTML_TCCJ_AUTH"),'
';
- ?>
-
Copy code
|