This article describes the PHP source code analysis of the DZX1.5 encryption and decryption function Authcode usage. Share to 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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60-61 |
<?php $authkey = ';/** * @param string $string: Entered plaintext (or ciphertext) that requires encryption (or decryption) * @param stri ng $operation: ' DECODE ' or other, where the default is to decrypt, enter other means of encrypting * @param string $key: Encryption key * @param int $expiry: validity/function Authcode ($s Tring, $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 < 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) && subst R ($result) = = substr (MD5 (substr ($result,). $keyb), 0) {return substr ($result);} else {return ';}} else {return $KEYC. Str_replace (' = ', ', Base64_encode ($result));} $STR = ' 1234 '; $key = ' 1234 '; echo "PlainText:". $str; echo "<br/>"; echo "key:". $key; $encode = Authcode ($str, ' one ', $key); echo "<br/>"; echo "Encrypted ciphertext:". $encode; echo "<br/>"; $decode = Authcode ($encode, ' decode ', $key); echo "decrypted plaintext:". $decode; /*end of php*/ |
The results of the operation are as follows:
Clear text: 1234
Key: 1234
Encrypted ciphertext: A52F67EXZGVY0HTQBO4VOREHQ3WXNL6E2ZLX75JGFOJW
Decrypted plaintext: 1234
I hope this article will help you with your PHP program design.