url加密并计算时间
2024-09-13 04:16:58
将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、查看打印后的结果
这样每次的链接地址都是动态的,而且可以在接收页面设置页面限制超时的有效期了
至此 一个简单的加密+时间判断就完成了。
最新文章
- Android Studio关于SVN的相关配置及从SVN检出项目
- 【实践】js实现简易的四则运算计算器
- 4、jvm内存回收&mdash;&mdash;器
- 第三届“HTML5峰会”变身“iWeb峰会”8月来袭
- ecshop 快速添加会员
- HTML5实践 -- 使用CSS3 Media Queries实现响应式设计
- styleCop
- Fedora 防火墙关闭与开启
- bootstrap的警告框
- MVC dropdownlist使用
- BootStrap-table 客户端分页和服务端分页的区别
- Kali Linux 常见问题解答
- 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)——ubuntu环境设置默认是utf-8,文件编码可使用Encodersoft批量转换
- python简单分布式demo
- Typora程序员的记事本.Typora常用快捷操作
- php学习----面向对象
- 2017-12-15python全栈9期第二天第五节之while else的用法二当不被break打断时else内容的结果会被打印
- 常用的16个c/c++面试题
- Altium Designer Summer 09 Gerber 文件设置
- tomcat9.0 配置账户