The specific example code of PHP encryption and decryption function authcode is as follows:
- // Parameter explanation
- // $string: plaintext or ciphertext
- // $operation: DECODE means decryption, others means encryption
- // $key: Key
- // $expiry: Ciphertext validity period
-
function authcode($string, $operation =
'DECODE', $key = '', $expiry = 0) {
-
// Dynamic key length, the same plaintext will generate different ciphertext, relying on the dynamic key
-
$ckey_length = 4;
- // Key
-
$key = md5($key ? $key : $GLOBALS['discuz_auth_key']);
- // Key a will participate in encryption and decryption
-
$ keya = md5(substr($key, 0, 16));
- // key b Will be used for data integrity verification
-
$keyb = md5(substr ($key, 16, 16));
- // Key c is used to change the generated ciphertext
-
$ keyc = $ckey_length ? ($operation == 'DECODE'
? substr($string, 0, $ckey_length): substr (md5
(microtime()), -$ckey_length)) : '';
- //The key used by the PHP encryption and decryption function authcode to participate in the operation
-
$cryptkey = $keya.md5($keya.$keyc);
-
$key_length = strlen($cryptkey);
- // Plain text, the first 10 bits are used to save Timestamp, verify data validity when decrypting.
10 to 26 bits are used to save $keyb (key b). Data integrity will be verified through this key during decryption. - // If it is decoding, it will start from the $ckey_length bit, because the $ckey_
length bit before the ciphertext saves the dynamic key to ensure correct decryption -
$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 = '';
(0, 255); 🎜>(); -
//PHP encryption and decryption function authcode generates key book for($i
= -
0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]); -
} - //Using a fixed algorithm to scramble the key book and increase randomness seems very complicated. In fact, it will not increase the strength of the ciphertext for( $j = $i
- = 0
- ; $i <
-
256 ; $i++) { - $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j];
$box [$j] = $tmp; - }
//PHP encryption and decryption function authcode core encryption and decryption part - 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; - // PHP encryption and decryption function authcode gets the key from the key book, performs XOR, and then converts it into characters
$result - .= chr
(ord($string[$i]) ^ (- $box[($box[$a] + $box[$j]) % 256]));
- }
- if($operation
- == 'DECODE') { // substr($result, 0, 10) == 0 Verify data validity // substr($result, 0, 10) - time()
>
0 Verify data validity -
// substr($result, 10, 16) == substr(md5(substr- ($result, 26).$keyb), 0, 16) Verify data integrity // Verify data validity, please see the format of unencrypted plaintext
- 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 {
-
//PHP encryption and decryption function authcode saves the dynamic key in the ciphertext, which is why the same plaintext can be decrypted after
producing different ciphertexts - // Because the encrypted ciphertext may contain some special characters,
may be lost during the copying process, so base64 encoding is used - return $ keyc.str_replace('=', '',
base64_encode($result)); - }
-
}
The above code is the specific usage of PHP encryption and decryption function authcode. I hope you can initially grasp the meaning of this function through the content introduced in this article.
http://www.bkjia.com/PHPjc/446263.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446263.htmlTechArticleThe specific example code of PHP encryption and decryption function authcode is as follows: //Parameter explanation//$string: plain text or cipher text //$operation: DECODE means decryption, others means encryption //$key: key //$expir...