如何使用SecureRandom生成密鑰。 getInstanceStrong()?如何使用SecureRandom.getInstanceStrong()生成密鑰?
使用此代碼,我可以接收具有隨機值的字節數組。有沒有簡單的方法來生成給定長度的密鑰(例如,位),類型(int,字符串)和格式(十六進制,bin,dec)?
package com.company;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
public class KeyGen {
public void generate() throws NoSuchAlgorithmException {
SecureRandom random = SecureRandom.getInstanceStrong();
byte[] values = new byte[32]; // 256 bit
random.nextBytes(values);
StringBuilder sb = new StringBuilder();
for (byte b : values) {
sb.append(String.format("%02x", b));
}
System.out.print("Key: ");
System.out.println(sb.toString());
}
}
輸出:
Key: 8fcea84897f48f575c22441ece4e7ddb43ac08cd2c1a83fca46c080768468059
你真的應該命名你的軟件包'com.pany'當然:) –
@MaartenBodewes只是IntelliJ IDEA中的默認模板。 –
啊,好吧,默認情況下使用Eclipse,不知道。對於你自己的密碼,你的當前代碼似乎沒有太大的錯誤。不過你可能會考慮關鍵管理。也許將隨機密鑰放在某種容器中將是一個好主意,或者使用老師的公共PGP密鑰(例如使用Bouncy Castle功能)對其進行加密。 –