PHP加密解密

 1 /*********************************************************************
 2     函数名称:encrypt
 3     函数作用:加密解密字符串
 4     使用方法:
 5     加密     :encrypt('str','E','inckey');
 6     解密     :encrypt('被加密过的字符串','D','inckey');
 7     参数说明:
 8     $string   :需要加密解密的字符串
 9     $operation:判断是加密还是解密:E:加密   D:解密
10     $key      :加密的钥匙(密匙);
11 *********************************************************************/ 12 function encrypt($string,$operation,$key='') 13 { 14 $key=md5($key); 15 $key_length=strlen($key); 16 $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; 17 $string_length=strlen($string); 18 $rndkey=$box=array(); 19 $result=''; 20 for($i=0;$i<=255;$i++) 21 { 22 $rndkey[$i]=ord($key[$i%$key_length]); 23 $box[$i]=$i; 24 } 25 for($j=$i=0;$i<256;$i++) 26 { 27 $j=($j+$box[$i]+$rndkey[$i])%256; 28 $tmp=$box[$i]; 29 $box[$i]=$box[$j]; 30 $box[$j]=$tmp; 31 } 32 for($a=$j=$i=0;$i<$string_length;$i++) 33 { 34 $a=($a+1)%256; 35 $j=($j+$box[$a])%256; 36 $tmp=$box[$a]; 37 $box[$a]=$box[$j]; 38 $box[$j]=$tmp; 39 $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); 40 } 41 if($operation=='D') 42 { 43 if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)) 44 { 45 return substr($result,8); 46 } 47 else 48 { 49 return''; 50 } 51 } 52 else 53 { 54 return str_replace('=','',base64_encode($result)); 55 } 56 }

测试:

1 $id = 132;
2      
3 $token = encrypt($id, 'E', 'a');
4      
5 echo '加密:'.encrypt($id, 'E', 'a');
6 echo '<br />';
7      
8 echo '解密:'.encrypt($token, 'D', 'a');
原文地址:https://www.cnblogs.com/inc-is-include/p/5165513.html