Linux / Java - 更改SecureRandom的种子源

时间:2015-10-10 12:11:44

标签: java ubuntu random

我有以下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。

感谢您的支持:)

1 个答案:

答案 0 :(得分:1)

您可以使用SecureRandom的{​​{1}}方法向setSeed使用的“随机性”补充任意数据,包括来自SecureRandom或其他不确定性数据的数据。