2015-10-19 6 views
0

Я пытаюсь записать массив байтов в файл, а затем прочитать его снова. Проблема в том, что массив байтов, который я читаю, отличается от того, что я написал. Выход ниже код:Различные байты, из которых я написал

[B @ 21a06946 (Original массив написан)

[B @ 2fc14f68 (байтовый массив чтения)

 byte[] encryptedKey = rsaCipher.encrypt(AESKey, publicKeyPathName, transformation, encoding); 
     System.out.println(encryptedKey); 
     List<byte[]> list = new ArrayList<byte[]>(); 
     list.add(encryptedKey); 
     ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("encryptedKey")); 
     out.writeObject(list); 
     out.close(); 


     ObjectInputStream in = new ObjectInputStream(new FileInputStream("encryptedKey")); 
     List<byte[]> byteList = (List<byte[]>) in.readObject(); 
     in.close(); 
     byte[] encryptedKey2 = byteList.get(0); 

     System.out.println(encryptedKey2); 
+4

Экземпляр другой, но вы проверили содержание? – Tunaki

+3

Это не то, как вы проверяете равенство массива, используйте Arrays.equals (byte [] 1, byte [] 2) вместо –

+0

Когда вы видите строку типа '[B @ ...', вы должны заметить, что это ссылка на переменную а не его содержание. '[' обозначает массив, 'B' для' byte' и '@ ...' для" at ... ". –

ответ

2

Массивы не имеют собственное строковое представление. Чтобы увидеть содержимое, используйте ниже:

System.out.println(java.util.Arrays.toString(encryptedKey)); 
System.out.println(java.util.Arrays.toString(encryptedKey2)); 
+0

На самом деле я мог подумать сам, спасибо вам большое! – user3376554

+0

@ user3376554 Если бы мой ответ помог вам, не могли бы вы принять его? :) –