<?php function keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr++; } return $tmp; } function encrypt($txt,$key) { $encrypt_key = md5(mt_rand(0,100)); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.=substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); $ctr++; } return keyED($tmp,$key); } function decrypt($txt,$key) { $txt = keyED($txt,$key); $tmp = ""; for($i=0;$i<strlen($txt);$i++) { $md5 = substr($txt,$i,1); $i++; $tmp.= (substr($txt,$i,1) ^ $md5); } return $tmp; } function encrypt_url($url,$key) { return rawurlencode(base64_encode(encrypt($url,$key))); } function decrypt_url($url,$key) { return decrypt(base64_decode(rawurldecode($url)),$key); } function geturl($str,$key) { $str = decrypt_url($str,$key); $url_array = explode('&',$str); if (is_array($url_array)) { foreach ($url_array as $var) { $var_array = explode("=",$var); $vars[$var_array[0]]=$var_array[1]; } } return $vars; } ?> 用法示例如下: <?php $key = 'key'; //生产加密参数地址 for ($i=0;$i<10;$i++) { echo "<a href="./deurl.php?url=" mce_href="deurl.php?url="".encrypt_url("id=$i&sdf=asdf&time=".time(),$key).">文章$i</a><br>"; } //获取参数地址 $get = geturl($_GET['url'],$key); var_dump($get); ?>