我一直在讨厌这个, 我正在使用BlowFish来加密我的数据,这个数据(byte [])被发送到服务器,我需要将数据保存在设备上,所以我想把它作为String保存在我的数据库中。
当我想将byte []转换为String时,问题就出现了,因为它包含负数。 我尝试了很多字符集但没有好处,java字节是无符号的....
有什么建议吗?
答案 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。