|
$authkey = ";
/**
* @param string $string: Input plaintext (or ciphertext) that needs to be encrypted (or decrypted)
* @param string $operation: ' DECODE ' or other, where the default is to decrypt, input other means to encrypt
* @param string $key: Add decryption key
* @param int $expiry: expiry date
*/
function Authcode ($string, $operation = ' DECODE ', $key = ", $expiry = 0) {
Global $authkey;
$ckey _length = 4;
$key = MD5 ($key! = "? $key: $authkey);
$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 < $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, ten) = = 0 | | substr ($result, 0,)-time () > 0) && substr ($result, ten, +) = = SUBSTR (MD 5 (substr ($result, +). $keyb), 0, 16)) {
Return substr ($result, 26);
} else {
Return ';
}
} else {
Return $KEYC. Str_replace (' = ', ' ', Base64_encode ($result));
}
}
$STR = ' 1234 ';
$key = ' 1234 ';
echo "Clear text:". $str;
echo "
";
echo "key:". $key;
$encode = Authcode ($str, ' one ', $key);
echo "
";
echo "Ciphertext after encryption:" $ENCODE;
echo "
";
$decode = Authcode ($encode, ' decode ', $key);
echo "decrypted plaintext:". $decode;
/*end of php*/
|