php开发中的url地址传输加密解密函数

function keyED($txt,$encrypt_key) //定义一个keyED  
{         
    $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;  
}
// 加密url参数
function encrypt_url($url,$key)  
{  
    return rawurlencode(base64_encode(encrypt($url,$key)));  
}
// 解密url参数
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;  
}

测试

$key = 'key';
//生产加密参数地址
for ($i=0;$i<10;$i++)
{
    echo "<a href=./url.php?url=".encrypt_url("id=$i&act=123456&time=".time(),$key).">php技术文章$i</a><br>";
}

//获取参数地址
$get = geturl($_GET['url'],$key);
var_dump($get);

 

posted @ 2015-07-15 15:31  壁虎漫步.  阅读(5922)  评论(0编辑  收藏  举报