zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    软件工程实践总结
  • 原文地址:https://www.cnblogs.com/phpfensi/p/4648464.html
Copyright © 2011-2022 走看看