2016-06-23 9 views
0

私は以下を使用してランダム鍵を生成しており、それをファイルに保存します。私は値を印刷します。ファイルから鍵を読み取る

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()); 

私は、これを使用してそれを読む:

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

印刷されている値が一致しないが。私は間違って何をしていますか? 値は同じではありませんか?

答えて

0

byte []のtoString()はHashCodeを返し、配列の内容が同じでも(同じに等しい)内容が同じでも、配列のハッシュコードが異なる場合があります。

0

byte[].toString()は、Object.toString()からオーバーライドされないため、配列の内容には依存しません。 Arrays.toString()が必要です。

関連する問題