我有以下SecureRandom实现:
public static int getSecureRandomInt(int min, int max) {
int random = -1;
try {
SecureRandom secureRandom = SecureRandom.getInstance("NativePRNG");
byte[] bytes = new byte[512];
secureRandom.nextBytes(bytes);
random = secureRandom.nextInt(max);
while(random < min) {
bytes = new byte[512];
secureRandom.nextBytes(bytes);
random = secureRandom.nextInt(max);
}
} catch (NoSuchAlgorithmException noSuchAlgo) {
System.out.println(" No Such Algorithm exists " + noSuchAlgo);
}
return random;
}
我现在希望种子的目的地是/ dev / ttyACM1(我的硬件RNG)而不是/ dev / random或/ dev / urandom /。我已经尝试编辑java.security文件并通过
设置它securerandom.source =文件是:/ dev / ttyACM1
但这在某种程度上没有效果。我宁愿永久地从/ dev / random和/ dev / urandom到/ dev / ttyACM1建立一个永久链接,以便每个使用这两个位置获取熵的应用程序自动使用我的硬件RNG。我的操作系统是Ubuntu 15.04。
感谢您的支持:)
答案 0 :(得分:1)
您可以使用SecureRandom
的{{1}}方法向setSeed
使用的“随机性”补充任意数据,包括来自SecureRandom
或其他不确定性数据的数据。