url加密并计算时间

摘要:
将URL地址参数进行加密传输提高网站安全性加密算法,直接调用就好functionkeyED($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,
将URL地址参数进行加密传输提高网站安全性

加密算法,直接调用就好

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;
}
(封装一个比较时间戳大小的方法)
功能:计算两个时间戳之间相差的日时分秒
$begin_time  开始时间戳
$end_time 结束时间戳
function timediff($begin_time,$end_time)
{
    $begin_time = strtotime($begin_time);
    $end_time = strtotime($end_time);
    if($begin_time < $end_time){
        $starttime = $begin_time;
        $endtime = $end_time;
    }else{
        $starttime = $end_time;
        $endtime = $begin_time;
    }

    //计算天数
    $timediff = $endtime-$starttime;
    $days = intval($timediff/86400);
    //计算小时数
    $remain = $timediff%86400;
    $hours = intval($remain/3600);
    //计算分钟数
    $remain = $remain%3600;
    $mins = intval($remain/60);
    //计算秒数
    $secs = $remain%60;
    $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);
    return $res;
}

下面是进行加密解密具体操作

1、首先对url进行加密,参数这里就写了一个时间

$key = 'key';   //url 加密字符
$time = date('Y-m-d h:i:s',time());  //获取时间
$url = "http://XXXXXXX/XXX/XXX.html?url=".encrypt_url("&agent_phone=&agent_level=&&time=$time",$key);
echo $url;  //看下效果
// http://XXXXXXX/XXX/XXX.html?url=UiQDMVJnXmJabgh4VwgEIQ9tC25UYVVoXjhZL1E2VWdXYlNuUnQBBww6VzZRJwExAGYGMQF8BXsBLlduAGtVZVI%2FA2JSMF42WjgIIVdnBGAPKAswVDhVLV41WTpRbVUzVzNTOlIzAW4%3D

2、访问加密后的url,进行打印

$time = date('Y-m-d h:i:s',time());
$decodeurl =  geturl($_GET['url'],$key);
p($decodeurl);  //打印解密后的url
echo $time;    //当前时间
$diff_time = timediff($time,$decodeurl['time']);  //比较时间戳大小
p($diff_time);
exit;

3、查看打印后的结果

url加密并计算时间第1张

url加密并计算时间第2张

这样每次的链接地址都是动态的,而且可以在接收页面设置页面限制超时的有效期了

至此 一个简单的加密+时间判断就完成了。

免责声明:文章转载自《url加密并计算时间》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇git subtree有效管理公共第三方libCSS 伪类选择器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

URL访问模式

所谓的URL访问模式(url路由模式),值的就是不同格式的请求的URL。 ①普通模式(get模型) 示例:http://www.tpshop.com/index.php?m=Home&c=Test&a=index&page=10 格式:http://域名/入口文件?m=分组名&c=控制器名称&a=操作方法名称&a...

webp图片实践之路

最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中。传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显。估计在不久的将来,webp会成为标配。 本文主要分享一下我们在webp图片使用上的实践之路。   我们会从三部分来聊聊webp这个话题。 什么是webp,它有什么用? 使用webp的常规方法以及...

Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统

一、写在前面   现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码、需要拖动滑块的滑动验证码、甚至还有手机验证码。当你与之打交道的时候,有没有考虑过其背后的原理呢?当然了,对于那些复杂的验证码我们想要弄得一清二楚还是很难的,但是可以挑软柿子捏...

什么是高并发,如何避免高并发

之前我将高并发的解决方法误认为是线程或者是队列可以解决,因为高并发的时候是有很多用户在访问,导致出现系统数据不正确、丢失数据现象,所以想到 的是用队列解决,其实队列解决的方式也可以处理,比如我们在竞拍商品、转发评论微博或者是秒杀商品等,同一时间访问量特别大,队列在此起到特别的作用,将 所有请求放入队列,以毫秒计时单位,有序的进行,从而不会出现数据丢失系统...

python如何获取公众号下面粉丝的openid

如何获取公众号下面粉丝的openid呢,首先要获取一个access_token,这个token可不是令牌(Token),如何获取这个access_token呢?有两种方法,方法如下: #-*- coding: cp936 -*- #python 27 #xiaodeng #原文在 https://www.cnblogs.com/dengyg200891/p...

python-requests.post方法中data与json参数区别

 GET 在通过requests.get()进行GET请求时,key1=value1&key2=value2可以写成字典形式在parms中传参 from common.baseRquest import BaseRquest url ='http://10.162.16.5:8072/contents/list' parm = { "con...