我正在使用以下内容生成随机密钥,并希望将其存储到文件中。我打印出值。
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 :(得分:0)
byte[].toString()
未被Object.toString()
覆盖,因此不依赖于数组的内容。您需要Arrays.toString()
。
答案 1 :(得分:0)
byte []的toString()返回HashCode,并且只要数组不相同(等于),即使内容相同,数组的Hashcode也可能不同。