V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pack27
V2EX  ›  Java

"TmSqr0jZItvZP4ueSsqnjJm8H0A=" Base64 解码问题?

  •  
  •   pack27 · 2018-11-20 22:04:32 +08:00 · 1465 次点击
    这是一个创建于 2201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在学习 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(...)));

    请问什么地方出问题了?

    GDC
        1
    GDC  
       2018-11-20 22:10:57 +08:00
    因为磁力链本来就不是 base64 啊…… 固定长度的值,怎么会是 base64 呢…
    pack27
        2
    pack27  
    OP
       2018-11-20 22:21:42 +08:00
    @GDC
    抱歉,我讲得不清楚。
    我不是要将磁力链转成 Base64。

    是 DUMP 文件里面 hash 字段是上面的编码,无法直接改成磁力链。
    我要先将它解码,再转换。可惜不成功。
    它标题是 HASH(B64),加上有点像,所以猜测是 Base64 编码。
    billlee
        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 ...@
    pack27
        4
    pack27  
    OP
       2018-11-20 22:59:29 +08:00
    @billlee
    晕,Linux 可以转换。
    看来是字符集设置问题?
    billlee
        5
    billlee  
       2018-11-20 23:40:11 +08:00
    @pack27 #4 和字符集没有关系,base64 decode 出来的就是一个 20 字节的 byte array, 不是字符。
    pack27
        6
    pack27  
    OP
       2018-11-21 00:09:20 +08:00
    @billlee
    谢谢提醒,是我先入为主认为 Hash 必然是 String。
    其实编码前的原始数据是 2/16 进制 byte。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:29 · PVG 00:29 · LAX 08:29 · JFK 11:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.