这篇是我之前做项目时用到的,写了个小demo,发在原来的一个博客里。因为博客空间在国外经常被墙,今天把之前写的一些东西搬到这里来。
迅雷,快车旋风链接编码解码C#源代码
在做一个项目时,有要求用到下载工具下载,于是上网找了找,找到了这些链接的加密规则,自己写了几个转换方法
写的有点急,可能不太完善,若您在使用中发现问题,烦请留言给我指出,谢谢!
using System;
using System.Text;
namespace Base64Url
{
class Program
{
#region 静态常量
publicconststring _thunder = "Thunder://";
publicconststring _flashget = "Flashget://";
publicconststring _qqdl = "Qqdl://";
#endregion
staticvoid Main(string[] args)
{
string url = "";
url = "thunder://QUFmdHA6Ly82OjZAZnRwLjY2eXMub3JnOjQ1MDgv44CQ6L+F6Zu35LiL6L29d3d3LmR5MTMxLmNvbeOAkVjmiJjorabliY3kvKDvvJrph6HliJrni7xCROS4reiLseWPjOWtlzEyODDpq5jmuIUucm12Ylpa";
string url2 = "http://xiaohuochai.net";
string thunder = "";
string flashget = "";
string qqdl = "";
thunder = EncodeUrlToBase64(url2, LinkType.Thunder);
flashget = EncodeUrlToBase64(url2, LinkType.Flashget);
qqdl = EncodeUrlToBase64(url2, LinkType.Qqdl);
Console.Write(thunder + "\r\n" + flashget + "\r\n" + qqdl + "\r\n");
string result = "您输入的地址可能不是迅雷,快车,旋风中的任何一种!";
if (url.StartsWith(_thunder, true, null))
result = DecodeUrlFromBase64(url.Remove(0, _thunder.Length), LinkType.Thunder);
if (url.StartsWith(_flashget, true, null))
result = DecodeUrlFromBase64(url.Remove(0, _flashget.Length), LinkType.Flashget);
if (url.StartsWith(_qqdl, true, null))
result = DecodeUrlFromBase64(url.Remove(0, _qqdl.Length), LinkType.Qqdl);
Console.Write(result);
Console.ReadLine();
}
#region 编码&解码
#region 编码
protectedstaticstring EncodeUrlToBase64(string url, LinkType linktype)
{
string enurl = "";
string tempUrl = "";
switch (linktype)
{
case LinkType.Thunder:
tempUrl = "AA" + url + "ZZ";
enurl = _thunder + EnCodeUrl(tempUrl);
break;
case LinkType.Flashget:
tempUrl = "[FLASHGET]" + url + "[FLASHGET]";
enurl = _flashget + EnCodeUrl(tempUrl) + "&xiaohuochai";
break;
case LinkType.Qqdl:
enurl = _qqdl + EnCodeUrl(url);
break;
default:
break;
}
return enurl;
}
privatestaticstring EnCodeUrl(string tempUrl)
{
byte[] bytes; string enurl;
bytes = Encoding.Default.GetBytes(tempUrl);
enurl = Convert.ToBase64String(bytes);
return enurl;
}
#endregion
#region 解码
protectedstaticstring DecodeUrlFromBase64(string baseurl, LinkType linktype)
{
string deurl = "";
switch (linktype)
{
case LinkType.Thunder:
deurl = DecodeUrl(baseurl);
deurl = deurl.Remove(0, 2);
deurl = deurl.Remove(deurl.Length - 2);
break;
case LinkType.Flashget:
deurl = DecodeUrl(baseurl.Remove(baseurl.LastIndexOf('&')));
deurl = deurl.Remove(0, 10);
deurl = deurl.Remove(deurl.Length - 10);
break;
case LinkType.Qqdl:
deurl = DecodeUrl(baseurl);
break;
default:
break;
}
return deurl;
}
privatestaticstring DecodeUrl(string baseurl)
{
byte[] bytes;
string deurl;
bytes = Convert.FromBase64String(baseurl);
deurl = Encoding.UTF8.GetString(bytes);
return deurl;
}
#endregion
#endregion
}
enum LinkType
{
Thunder,
Flashget,
Qqdl
}
}