基于这几个函数可逆转的加密为:base_encode()、urlencode()相对应的解密函数:base_decode() 、urldecode() ,示例如下:
1、第一种加密解密算法
<?php 
function encryptDecrypt($key, $string, $decrypt){ 
 if($decrypt){ 
 $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12"); 
 return $decrypted; 
 }else{ 
 $encrypted = base_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); 
 return $encrypted; 
 } 
} 
//加密:"z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=" 
echo encryptDecrypt('password', 'Helloweba欢迎您',0); 
//解密:"Helloweba欢迎您" 
echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1); 
?>2、第二种解密解密算法
<?php 
//加密函数 
function lock_url($txt,$key='www.xxxx.com'){ 
 $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567-=+"; 
 $nh = rand(0,); 
 $ch = $chars[$nh]; 
 $mdKey = md5($key.$ch); 
 $mdKey = substr($mdKey,$nh%8, $nh%8+7); 
 $txt = base_encode($txt); 
 $tmp = ''; 
 $i=0;$j=0;$k = 0; 
 for ($i=0; $i<strlen($txt); $i++) { 
 $k = $k == strlen($mdKey) ? 0 : $k; 
 $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%; 
 $tmp .= $chars[$j]; 
 } 
 return urlencode($ch.$tmp); 
} 
//解密函数 
function unlock_url($txt,$key='www.xxxx.com'){ 
 $txt = urldecode($txt); 
 $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567-=+"; 
 $ch = $txt[0]; 
 $nh = strpos($chars,$ch); 
 $mdKey = md5($key.$ch); 
 $mdKey = substr($mdKey,$nh%8, $nh%8+7); 
 $txt = substr($txt,1); 
 $tmp = ''; 
 $i=0;$j=0; $k = 0; 
 for ($i=0; $i<strlen($txt); $i++) { 
 $k = $k == strlen($mdKey) ? 0 : $k; 
 $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]); 
 while ($j<0) $j+=; 
 $tmp .= $chars[$j]; 
 } 
 return base_decode($tmp); 
} 
?>3、第三种加密解密算法
<?php 
//改进后的算法 
//加密函数 
function lock_url($txt,$key='test'){ 
 $txt = $txt.$key; 
 $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567-=+"; 
 $nh = rand(0,); 
 $ch = $chars[$nh]; 
 $mdKey = md5($key.$ch); 
 $mdKey = substr($mdKey,$nh%8, $nh%8+7); 
 $txt = base_encode($txt); 
 $tmp = ''; 
 $i=0;$j=0;$k = 0; 
 for ($i=0; $i<strlen($txt); $i++) { 
 $k = $k == strlen($mdKey) ? 0 : $k; 
 $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%; 
 $tmp .= $chars[$j]; 
 } 
 return urlencode(base_encode($ch.$tmp)); 
} 
//解密函数 
function unlock_url($txt,$key='test'){ 
 $txt = base_decode(urldecode($txt)); 
 $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567-=+"; 
 $ch = $txt[0]; 
 $nh = strpos($chars,$ch); 
 $mdKey = md5($key.$ch); 
 $mdKey = substr($mdKey,$nh%8, $nh%8+7); 
 $txt = substr($txt,1); 
 $tmp = ''; 
 $i=0;$j=0; $k = 0; 
 for ($i=0; $i<strlen($txt); $i++) { 
 $k = $k == strlen($mdKey) ? 0 : $k; 
 $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]); 
 while ($j<0) $j+=; 
 $tmp .= $chars[$j]; 
 } 
 return trim(base_decode($tmp),$key); 
} 
?>对于不同需要,可以使用不同加密解密算法。
推荐教程:PHP视频教程
下载本文