0

我正在将 byte[] 数组转换为 string 。然后将字符串转换回 byte[] 数组。然后检查两个数组是否相等 - 我知道它们不相等:

 byte[] ciphertext2=c.doFinal(username.getBytes("utf-8"));
          //JUST CHECKING IGNORE
          String qaz=new String(ciphertext2,"utf-8");
          //qaz=qaz+"1";
          System.out.println("just chekcing------------------------"+qaz);
          byte[] ciphertext3=qaz.getBytes("utf-8");
          if(Arrays.equals(ciphertext2,ciphertext3))
          {
           System.out.println("just chekcing they are equal------------------------");
          }
          else
          System.out.println("just chekcing they are not equal------------------------");<br>

输出 :

just chekcing they are not equal-------------------- 


为什么它不起作用?
编辑
它在使用 Java 的 Base64 时工作得很好。但是为什么直接将字节转换为字符串时它不起作用?当您将字符串转换为字节数组时实际发生了什么,反之亦然?

4

1 回答 1

4

如果这是加密的结果,则不应使用字符串构造函数。您没有编码文本 - 您有任意二进制数据。您需要了解本质上是文本且需要以二进制形式表示的数据(例如将文本文件写入磁盘)与本质上是二进制且需要以文本形式表示的数据(例如包括加密数据XML 文档)。

您应该使用 base64(例如,使用这个公共域库)或可能是十六进制。这将产生保证往返原始二进制数据的 ASCII 数据。

于 2012-04-18T05:52:18.647 回答