算法一:
//加密函数 function lock_url($txt,$key='yang') {$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";$nh = rand(0,64);$ch = $chars[$nh];$mdKey = md5($key.$ch);$mdKey = substr($mdKey,$nh%8, $nh%8+7);$txt = base64_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++]))%64;$tmp .= $chars[$j];}return urlencode($ch.$tmp); } //解密函数 function unlock_url($txt,$key='yang') {$txt = urldecode($txt);$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";$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+=64;$tmp .= $chars[$j];}return base64_decode($tmp); }
算法二:
function passport_encrypt($txt, $key = 'yang') { 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 urlencode(base64_encode(passport_key($tmp, $key))); } function passport_decrypt($txt, $key = 'yang') { $txt = passport_key(base64_decode(urldecode($txt)), $key); $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $md5 = $txt[$i]; $tmp .= $txt[++$i] ^ $md5; } return $tmp; }
算法三:
//加密函数 function lock_url($txt,$key='yang') {$txt = $txt.$key;$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";$nh = rand(0,64);$ch = $chars[$nh];$mdKey = md5($key.$ch);$mdKey = substr($mdKey,$nh%8, $nh%8+7);$txt = base64_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++]))%64;$tmp .= $chars[$j];}return urlencode(base64_encode($ch.$tmp)); } //解密函数 function unlock_url($txt,$key='yang') {$txt = base64_decode(urldecode($txt));$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";$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+=64;$tmp .= $chars[$j];}return trim(base64_decode($tmp),$key); }