正在学习 JAVA,练手写程序。 从海盗湾下载 dump 文件( csv 格式),想做一个搜索程序。 输出文件时发现 dump 文件里面的 hash 字段,无法转成磁力链的 hash。
字段标记是 HASH(B64),尝试用 Java 8 的 Base64 类解码, Basic/URL/MIME 三种方式都试过,CharSet 也设置过, 结果总是乱码。 从 TPB 网站找到同一文件,得到的 HASH 进行 Base64 编码,也不是字段里的内容。
测试用 Hash (内容是 OFFICE 2016 ): "TmSqr0jZItvZP4ueSsqnjJm8H0A="
磁力链 Hash: "4E64AAAF48D922DBD93F8B9E4ACAA78C99BC1F40"
转换代码: String s = "TmSqr0jZItvZP4ueSsqnjJm8H0A="; byte[] b = Base64.getUrlDecoder().decode(s); System.out.println(new String(b); // System.out.println(new String(b, Charset.forName(...)));
请问什么地方出问题了?
1
GDC 2018-11-20 22:10:57 +08:00
因为磁力链本来就不是 base64 啊…… 固定长度的值,怎么会是 base64 呢…
|
2
pack27 OP @GDC
抱歉,我讲得不清楚。 我不是要将磁力链转成 Base64。 是 DUMP 文件里面 hash 字段是上面的编码,无法直接改成磁力链。 我要先将它解码,再转换。可惜不成功。 它标题是 HASH(B64),加上有点像,所以猜测是 Base64 编码。 |
3
billlee 2018-11-20 22:51:56 +08:00 1
$ echo TmSqr0jZItvZP4ueSsqnjJm8H0A= | base64 -d | xxd
00000000: 4e64 aaaf 48d9 22db d93f 8b9e 4aca a78c Nd..H."..?..J... 00000010: 99bc 1f40 ...@ |