android将包含负数的byte []转换为字符串并使用post发送

时间:2013-08-29 13:29:22

标签: java android

我一直在讨厌这个, 我正在使用BlowFish来加密我的数据,这个数据(byte [])被发送到服务器,我需要将数据保存在设备上,所以我想把它作为String保存在我的数据库中。

当我想将byte []转换为String时,问题就出现了,因为它包含负数。 我尝试了很多字符集但没有好处,java字节是无符号的....

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这不是问题的负数 - 这是你试图将加密结果 - 基本上是任意二进制数据 - 直接转换为字符串的事实。

您应该使用hex或base64来编码。当您使用Android时,可以使用Base64类:

byte[] encryptedData = ...;
String base64 = Base64.encode(encryptedData, Base64.DEFAULT);

然后当你解密时:

String base64 = loadFromDatabase(); // Or whatever
byte[] encryptedData = Base64.decode(base64, Base64.DeFAULT);

假设你首先需要它作为String。您应该考虑将加密数据存储为blob。