今天使用迅雷下个电视剧,看着迅雷下载地址是一串字符串。好奇它是怎么下载下来的。
我们都知道一般下载是
http://+一段blank+“文件名”;
或者FTP://+路径+"文件名"
那么迅雷难道是凭证独一无二的编码它自己数据找路径还是直接是一个加密方式?前者可能性几乎为零,谁会设计个无意义的编码,然后通过联网查找下载方式,这样 建立多少个数据库服务器。
百度了一下迅雷加密规则。有人说是BASE64加密方法
注:磁力链接采用文件指纹的方法。
于是用java写了一个测试一次,结果果然是这样.
具体代码如下:
import java.io.IOException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64Demo {
public static void main(String[] args) {
String str="迅雷下载链接";
if(!str.startWith("thunder:")){
return;
}
str=str.replace("thunder://","");
System.err.println(dencode(str));
System.err.println(encode(dencode(str)));
}
private static String encode(String str) {
if(str==null)
return null;
//JDK自带的加密方式
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(str.getBytes());
}
private static String dencode(String str) {
if(str==null)
return null;
//JDK自带的解密方式
BASE64Decoder encoder = new BASE64Decoder();
String strDe = "";
try {
strDe = new String(encoder.decodeBuffer(str));
} catch (IOException e) {
e.printStackTrace();
}
return strDe;
}
}