Home >Backend Development >PHP Tutorial >PHP source code analysis of DZX1.5 encryption and decryption function authcode usage_PHP tutorial
This article describes the usage of DZX1.5 encryption and decryption function authcode in php source code analysis. Share it with everyone for your reference. The specific analysis is as follows:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
$authkey = ''; /** * @param string $string: The input plaintext (or ciphertext) that needs to be encrypted (or decrypted) * @param string $operation: 'DECODE' or other, the default means decryption, input other means encryption * @param string $key: encryption and decryption key * @param int $expiry: Validity period */ 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(' 0d', $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)); } } $str = '1234'; $key = '1234'; echo "plain text:".$str; echo " echo "Key:".$key; $encode = authcode($str,'11',$key); echo " echo "Encrypted ciphertext:".$encode; echo " $decode = authcode($encode,'DECODE',$key); echo "Decrypted plain text:".$decode; /*End of php*/ |
The running results are as follows:
Plain text: 1234
Key:1234
Encrypted ciphertext: a52f67eXZGVy0HtQBo4vOREhq3WxnL6E2zlx75JGfoJW
Decrypted plain text: 1234
I hope this article will be helpful to everyone’s PHP programming design.