如何生成SecureRandom数组,将其转换为字符串,然后将其转换回数组

时间:2014-03-17 19:40:44

标签: java cryptography

以下是我如何生成SecureRandom

byte[] arr = SecureRandom.getInstance("SHA1PRNG").generateSeed(32);

然后,我把它转换成这样的字符串:

String str = new String(arr)

最后,我尝试将字符串转换回原始字节数组:

byte[] arr2 = str.getBytes()

问题是最后一个语句没有返回我原来的字节数组......我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

  

然后,我把它转换成这样的字符串:

不要这样做!

这里有两个问题:

  • 此构造函数将使用默认编码;
  • 即使您使用UTF-8作为编码,某些字节序列也无法编码为char s!

使用String来保存二进制数据;或使用基于字符串的编码,例如Base64。

有关详细信息,请参阅CharsetDecoderCodingErrorAction