我正在使用 JNCryptor 库对字符串进行加密,然后将其作为加密字符串发送到我的服务器。这是我的代码:
String teststring = "Hello World";
JNCryptor cryptor = new AES256JNCryptor();
byte[] plaintext = teststring.getBytes();
String password = "test";
try {
byte[] ciphertext = cryptor.encryptData(plaintext, password.toCharArray());
String a = new String(ciphertext);
return a;
} catch (CryptorException e) {
// Something went wrong
e.printStackTrace();
return "0";
}
但是,当我将字符串“a”发送到服务器时,它有一堆无法识别的字符。我阅读了有关此的解释 :
字符串不是二进制数据的合适容器,密文是二进制数据。对于任何给定的字符编码,并非所有字节和字节序列都表示字符,当发现不可表示的字节或序列时,它会转换为某个错误字符。显然这个错误字符不能被转换回一个唯一的字节或字节序列(它是一个多->一个映射)。
这个建议正确吗?在这种情况下,如何正确地将 byte[] 转换为字符串?这样我就可以将它以可读的方式存储在我的服务器上?