Authcode This function is used by many people, this function from the Discuz program, used to encrypt the decryption string, you can set keys (key) and expiration time, in many cases. The original function code may generate a character such as +,/, &, resulting in the escape of the URL pass value, resulting in the inability to decrypt. Fire end of the network slightly modified to replace these characters into other characters, decryption and then replaced back, so perfect!
The code is as follows:
function Authcode ($string, $operation = ' DECODE ', $key = ', $expiry = 0) {if ($operation = = ' DECODE ') {$string = str
_replace (' [A] ', ' + ', $string);
$string = Str_replace (' [b] ', ' & ', $string);
$string = Str_replace (' [C] ', '/', $string);
} $ckey _length = 4;
$key = MD5 ($key $key: ' livcmsencryption ');
$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). $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,) = 0 | | substr ($result, 0)-time () > 0) && su
BSTR ($result) = = substr (MD5 (substr ($result,). $keyb) (0)) {return substr ($result, 26);
else {return ';
} else {$ustr = $keyc. Str_replace (' = ', ', Base64_encode ($result));
$ustr = str_replace (' + ', ' [a] ', $ustr);
$ustr = Str_replace (' & ', ' [b] ', $USTR);
$ustr = Str_replace ('/', ' [C] ', $USTR);
return $ustr; }
}