我一直在努力解决这个问题,我正在使用 BlowFish 来加密我的数据,这个数据(字节 [])被发送到服务器,我需要将数据保存在设备上,所以我想把它保存在我的数据库中作为字符串。
当我想将 byte[] 转换为 String 时,问题就出现了,因为它包含负数。我尝试了很多字符集,但都不好,java字节是无符号的......
有什么建议么?
问题不是负数 - 而是您试图将加密结果(本质上是任意二进制数据)直接转换为字符串。
您应该使用 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。