• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hahaba
V2EX  ›  程序员

关于 base64 解码的问题

  •  
  •   hahaba · Aug 23, 2021 · 2890 views
    This topic created in 1748 days ago, the information mentioned may be changed or developed.

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

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

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

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

    所以你看到的本不是内容,只是个地址。
    ysc3839
        14
    ysc3839  
       Aug 23, 2021 via Android
    @xunbug #10 发代码上来看看吧
    polaa
        15
    polaa  
       Aug 23, 2021
    ~|⇒ echo "G63bLQ6yFlve46h/LibzuQ==" |base64 -D|xxd
    00000000: 1bad db2d 0eb2 165b dee3 a87f 2e26 f3b9 ...-...[.....&..
    msg7086
        16
    msg7086  
       Aug 24, 2021
    解出乱码不就对了吗。你在期待什么样的结果呢。
    hahaba
        17
    hahaba  
    OP
       Aug 24, 2021
    @Mutoo 正解
    dallaslu
        18
    dallaslu  
       Aug 24, 2021
    你再用 Java 解一次,就不是 `[B@4dc912af` 了。你可能调用了 hutool.core.codec.Base64 内返回值类型为 `byte[]` 的 decode 方法。如果 python/js/go 解出来的结果都一致,说明就该解出乱码。还是研究一下原始串是怎么编码的吧!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2745 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 160ms · UTC 02:21 · PVG 10:21 · LAX 19:21 · JFK 22:21
    ♥ Do have faith in what you're doing.