将字节[]转换为字符串Java Android加密

将字节[]转换为字符串Java Android加密,java,android,encryption,jncryptor,Java,Android,Encryption,Jncryptor,在将字符串作为加密字符串发送到服务器之前,我使用JNCryptor库对其进行加密。这是我的密码: String teststring = "Hello World"; JNCryptor cryptor = new AES256JNCryptor(); byte[] plaintext = teststring.getBytes(); String password = "test"; try { byte[] ciphertext =

在将字符串作为加密字符串发送到服务器之前,我使用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”发送到服务器时,它有一堆无法识别的字符。我读 关于这一点:

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


这个建议正确吗?在这种情况下,如何将字节[]正确转换为字符串?这样我就可以方便地将其存储在服务器上

没有将字节数组转换为字符串的标准方法。您必须对字节数组进行编码。一种常见的方法是base64编码。 有关base64编码工作原理的说明:


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

没有将字节数组转换为字符串的标准方法。您必须对字节数组进行编码。一种常见的方法是base64编码。 有关base64编码工作原理的说明:


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

在Android上,这可以在类中访问。我不知道iOS。在Android上,这在课堂上是可以访问的。我不知道,建议是正确的。不注意它会导致流泪。这个建议是正确的。不注意它会导致流泪。