• 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);
  • 相关阅读:
    Docker笔记
    Fedora dnf配置
    Vue杂谈
    各类技术集锦
    在.NET Core 里使用 BouncyCastle 的DES加密算法
    Srapy爬虫之必备知识
    scrapy爬虫之环境安装
    Git很简单--图解攻略
    Vue.js下载方式及基本概念
    ajax与jsonp定义及使用方法
  • 原文地址:https://www.cnblogs.com/phpfensi/p/4648464.html
Copyright © 2020-2023  润新知