This article will take everyone to learn how to use PHP to implement encryption and decryption. The code has certain reference value, and friends in need can take a look.
<?php //加密函数 function passport_encrypt($txt, $key) { srand((double)microtime() * 1000000); $encrypt_key = md5(rand(0, 32000)); $ctr = 0; $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]); } return base64_encode(passport_key($tmp, $key)); } //解密函数 function passport_decrypt($txt, $key) { $txt = passport_key(base64_decode($txt), $key); $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $md5 = $txt[$i]; $tmp .= $txt[++$i] ^ $md5; } return $tmp; } //上面两个函数用到的公共函数 function passport_key($txt, $encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr = 0; $tmp = ''; for($i = 0; $i < strlen($txt); $i++) { $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; $tmp .= $txt[$i] ^ $encrypt_key[$ctr++]; } return $tmp; } //---------------------------------------- //---------------------------------------- //-------------示例----------------------- //---------------------------------------- //---------------------------------------- // $str = '你好,我是+-!少林a b张三丰'; echo '<br>------key:aaa----------<br>'; echo $x = passport_encrypt($str,'aaa'); //值会变,其中一个如下 //AOdS7lWlU+IM+1fnALBV5QOOV7dchQfEX+MCwgf2U3BXeQcnVuNavgPAA+hbmlLJAWEHIVRnD7hYvgf/U+lS4gCKUrdVvVO3 echo '<br>-----------------------<br>'; echo passport_decrypt($x,'aaa'); echo '<br><br><br><br><br><br><br><br><br><br><br><br>'; echo '<br>------key:bbb----------<br>'; echo $y = passport_encrypt($str,'bbb'); //值会变,其中一个如下 //Ae0F5gD1C+oB9wC/DOZZ6AeKU7MCjleWUbEAmFGuAi4JLF8gUeFW4lKQUrYBmlrAA2MHIVcxBrMFv1PzXOha5QGABb8A7Qu/ echo '<br>-----------------------<br>'; echo passport_decrypt($y,'bbb'); ?>
<?php //加解密字符串函数,可以加密中文 /* //加密 echo $encode = authcode('爱迪生', 'ENCODE', '3'); //DvAHOdGFqa8xK4CDLnbr2mE //解密 echo $decode = authcode($encode, 'DECODE', '3'); //爱迪生 //密钥 $auth_key = 34577; 参数:$string字符串,$operation加密还是解密,$key密钥 */ function authcode($string, $operation, $key = '') { $key = md5($key ? $key : $GLOBALS['auth_key']); $key_length = strlen($key); $string = $operation == 'DECODE' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string; $string_length = strlen($string); $rndkey = $box = array(); $result = ''; for ($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($key[$i % $key_length]); $box[$i] = $i; } 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, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) { return substr($result, 8); } else { return ''; } } else { return str_replace('=', '', base64_encode($result)); } } ?>
Related tutorials: PHP video tutorial
The above is the detailed content of PHP encryption and decryption function code implementation example. For more information, please follow other related articles on the PHP Chinese website!