【问题标题】:Value after Base64 encoding/decoding are not the sameBase64编码/解码后的值不一样
【发布时间】:2015-02-11 17:11:38
【问题描述】:

我需要在存储到数据库之前对我的数据进行编码/解码,但我有一个奇怪的问题,解码后的值与第一个不同 例如看看这段代码为什么seedBytes1和seedBytes2不一样? (我尝试了 encodedSeedBytes.getBytes("US-ASCII") 而不是 encodedSeedBytes 但没有成功)

seedBytes = new SecureRandom().generateSeed(16);
Log.i("LOG", "seedBytes1: " + seedBytes.toString()); // Before encoding
encodedSeedBytes = Base64.encodeToString(seedBytes, Base64.DEFAULT);
decodedSeedBytes = Base64.decode(encodedSeedBytes, Base64.DEFAULT);
Log.i("LOG", "seedBytes2: " + decodedSeedBytes.toString()); // After decoding

结果:(为什么这2个值不一样?)

I/LOG﹕ seedBytes1: [B@41764070
I/LOG﹕ seedBytes2: [B@41765bf0

【问题讨论】:

    标签: android encryption base64


    【解决方案1】:

    这是对 JVM 内存中对象位置的引用,而不是种子本身的值。

    According to the documentationgenerateSeed() 返回一个 Byte[]。

    你在一个字节数组上调用 toString(),它只返回它在内存中的位置。

    要将 byte[] 转换为字符串,您可以使用

    String s = new String(seedBytes);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      相关资源
      最近更新 更多