Base64编码/解码后的值不一样

时间:2015-02-11 17:11:38

标签: android encryption base64

我需要在存储到数据库之前对我的数据进行编码/解码,但我有奇怪的问题,解码后,值与第一次不一样 例如,看看这个代码为什么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

结果:(为什么这两个值不相同?)

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

1 个答案:

答案 0 :(得分:2)

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

According to the documentation generateSeed()返回Byte []。

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

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

String s = new String(seedBytes);