0

我一直在努力解决这个问题,我正在使用 BlowFish 来加密我的数据,这个数据(字节 [])被发送到服务器,我需要将数据保存在设备上,所以我想把它保存在我的数据库中作为字符串。

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

有什么建议么?

4

1 回答 1

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。

于 2013-08-29T13:31:50.223 回答