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

关于 base64 解码的问题

  •  
  •   hahaba · 2021-08-23 19:40:16 +08:00 · 2400 次点击
    这是一个创建于 1191 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有一段 base64 后的字符串:G63bLQ6yFlve46h/LibzuQ==

    使用 java 的 hutool.core.codec.Base64 解出结果为:[B@4dc912af

    使用 python/js/go 都解出乱码。求帮助

    18 条回复    2021-08-24 20:58:25 +08:00
    berserk
        1
    berserk  
       2021-08-23 19:50:38 +08:00
    ynyounuo
        2
    ynyounuo  
       2021-08-23 19:55:55 +08:00   ❤️ 1
    这个意思是 [B 这个 object 和它的 hashcode 并不是解析出的文本
    maojun
        3
    maojun  
       2021-08-23 19:57:19 +08:00
    你的问题不在解码,而是输入编码的时候就错了
    yousabuk
        4
    yousabuk  
       2021-08-23 20:07:17 +08:00 via iPhone
    你把引用 base64 了?
    wangbenjun5
        5
    wangbenjun5  
       2021-08-23 20:08:40 +08:00
    随便找个网页版的 base64 试一下,我试了你这段字符串 decode 后是乱码,说明这个字符串就有问题吧
    chendy
        6
    chendy  
       2021-08-23 20:17:07 +08:00
    解不出来,各种乱码,编码之前的数据本来就不是字符串?
    v2tudnew
        7
    v2tudnew  
       2021-08-23 20:19:18 +08:00
    用你的结果编码是:W0JANGRjOTEyYWY=
    Kiriya
        8
    Kiriya  
       2021-08-23 20:19:59 +08:00
    标准 base64 加密后应该没有 /符号,你可能引用了非标准 base64
    chendy
        9
    chendy  
       2021-08-23 20:51:00 +08:00   ❤️ 1
    顺便一说 [B@4dc912af 这明显是个 byte[] 的 toString() 结果……
    hahaba
        10
    hahaba  
    OP
       2021-08-23 21:27:24 +08:00
    @chendy 想知道如何用 python 解出同样的结果。无论他是否规范,他们使用这个解出来的值进行签名的
    billlee
        11
    billlee  
       2021-08-23 21:52:22 +08:00
    @chendy 这说明楼主根本不懂二进制
    chendy
        12
    chendy  
       2021-08-23 22:45:48 +08:00
    @xunbug #10 base64 是 字节数组 和 字符串 之间的转换,默认情况下应该就是一样的结果
    Mutoo
        13
    Mutoo  
       2021-08-23 23:22:42 +08:00
    [B@4dc912af 的意思是该对象是个 Byte Array, ID:4dc912af
    https://stackoverflow.com/a/1040883

    所以你看到的本不是内容,只是个地址。
    ysc3839
        14
    ysc3839  
       2021-08-23 23:28:53 +08:00 via Android
    @xunbug #10 发代码上来看看吧
    polaa
        15
    polaa  
       2021-08-23 23:44:50 +08:00
    ~|⇒ echo "G63bLQ6yFlve46h/LibzuQ==" |base64 -D|xxd
    00000000: 1bad db2d 0eb2 165b dee3 a87f 2e26 f3b9 ...-...[.....&..
    msg7086
        16
    msg7086  
       2021-08-24 06:14:09 +08:00
    解出乱码不就对了吗。你在期待什么样的结果呢。
    hahaba
        17
    hahaba  
    OP
       2021-08-24 11:06:50 +08:00
    @Mutoo 正解
    dallaslu
        18
    dallaslu  
       2021-08-24 20:58:25 +08:00
    你再用 Java 解一次,就不是 `[B@4dc912af` 了。你可能调用了 hutool.core.codec.Base64 内返回值类型为 `byte[]` 的 decode 方法。如果 python/js/go 解出来的结果都一致,说明就该解出乱码。还是研究一下原始串是怎么编码的吧!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3637 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:29 · PVG 12:29 · LAX 20:29 · JFK 23:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.