将byte []转换为String Java Android Encryption

时间:2014-07-22 17:57:45

标签: java android encryption jncryptor

我使用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"到服务器,它有一堆无法识别的字符。我看过an explanation 关于这个:

  

String不是二进制数据和密文的合适容器   二进制数据。对于任何给定字符编码不是所有字节和字节   序列表示字符,当表示不可表示的字节或时   发现序列被转换为某个错误字符。明显   此错误字符无法转换回唯一的字节或字节   序列(它是多个 - >一个映射)。

这个建议是否正确?在这种情况下,如何正确地将byte []转换为字符串?这样我就可以将它存储在我的服务器上?

1 个答案:

答案 0 :(得分:4)

没有从字节数组转换为字符串的标准方法。您必须编码字节数组。执行此操作的常用方法是base64编码。 有关base64编码如何工作的说明:http://en.wikipedia.org/wiki/Base64

然后一旦它到达你的服务器,base64将它解码回你的原始字节数组并存储它,完成!