2016-06-23 20 views
0

Ich erzeuge einen zufälligen Schlüssel mit den folgenden und möchte ihn in einer Datei speichern. Ich drucke den Wert aus.Lesen eines Schlüssels aus einer Datei

String keyfile = "key.txt"; 

KeyGenerator keyGen = KeyGenerator.getInstance("AES"); 
keyGen.init(keylen); 
SecretKey secretKey = keyGen.generateKey(); 
byte[] encoded = secretKey.getEncoded(); 
FileOutputStream output = new FileOutputStream(new File(keyfile)); 
IOUtils.write(encoded, output); 

System.out.println("Secret key is: " + encoded.toString()); 

Ich las es dann dies mit:

FileInputStream f = new FileInputStream(keyfile); 
byte[] data = IOUtils.toByteArray(f); 
System.out.println("Key is: " + data.toString()); 

jedoch die Werte, die nicht übereinstimmen gedruckt. Was mache ich falsch? Sollten die Werte nicht gleich sein?

Antwort

0

Die toString() von Byte [] gibt den HashCode zurück und der Hashcode eines Arrays kann unterschiedlich sein, auch wenn der Inhalt gleich ist, solange das Array nicht gleich ist (gleich).

0

byte[].toString() wird nicht von Object.toString() überschrieben und hängt daher nicht vom Inhalt des Arrays ab. Sie benötigen Arrays.toString().