【问题标题】:Convert byte[] to String Java Android Encryption将 byte[] 转换为 String Java Android 加密
【发布时间】:2014-09-13 16:37:21
【问题描述】:

我正在使用 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 关于这个:

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

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

【问题讨论】:

  • 建议是正确的。不注意它会导致眼泪。

标签: java android encryption jncryptor


【解决方案1】:

没有将字节数组转换为字符串的标准方法。您必须对字节数组进行编码。一种常见的方法是 base64 编码。 有关 base64 编码如何工作的说明:http://en.wikipedia.org/wiki/Base64

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

【讨论】:

猜你喜欢
  • 2017-09-25
  • 2012-01-02
  • 2023-03-10
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2012-05-18
相关资源
最近更新 更多