在将字符串作为加密字符串发送到服务器之前,我使用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[]转换为字符串?这样我就可以把它存储在我的服务器上?
发布于 2014-07-22 17:58:48
没有将字节数组转换为字符串的标准方法。您必须对字节数组进行编码。一种常见的方法是base64编码。有关base64编码工作方式的说明:http://en.wikipedia.org/wiki/Base64
然后,一旦它到达您的服务器,base64将其解码回原来的字节数组,并存储它,完成!
https://stackoverflow.com/questions/24894477
复制相似问题