gpt4 book ai didi

java - 重复使用 Java 的 SecureRandom

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:25 29 4
gpt4 key购买 nike

我对 SecureRandom 的用法有点困惑。我需要在循环中生成 n secure 随机数。为每一代使用相同的 SecureRandom 实例是否安全?以下解决方案在加密强度方面是否存在差异?

1) 没有种子的单实例

SecureRandom sr = new SecureRandom();
for(int i = 0; i < n; ++i) sr.nextInt();

2)每一代的新实例

for(int i = 0; i < n; ++i) new SecureRandom().nextInt();

3) 带种子的单实例

SecureRandom sr = new SecureRandom()
for(int i = 0; i < n; ++i) {
byte[] seed = sr.generateSeed(32);
sr.setSeed(seed);
sr.nextInt();
}

最佳答案

也许与直觉相反,第三个几乎肯定是最弱的,在循环迭代中重新播种是一个糟糕的主意。第二个是坏的,但没那么坏,因为 SecureRandom() 包括一个 strong 默认的播种策略。正如所问,第一个几乎肯定是最安全的,因为它最大化了熵周期。出于这个原因,我建议您将它提取到类级别常量。

private static final Random RANDOM = new SecureRandom();
// ...
// your method,
for (int i = 0; i < n; ++i) {
int num = RANDOM.nextInt();
}

关于java - 重复使用 Java 的 SecureRandom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641981/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com