gpt4 book ai didi

java - JDK 1.7 安全随机生成器播种和不可预测性

转载 作者:行者123 更新时间:2023-12-01 22:09:30 25 4
gpt4 key购买 nike

我计划实现 MersenneTwister 算法来进行随机生成。由于它不安全,因此正在寻找设置从 SecureRandom 派生的种子

SecureRandom secureRandomGenerator = SecureRandom.getInstance("SHA1PRNG");
int seedSize = 100;
int[] seed = new int[seedSize];
for (int i=0; i <seedSize; i++) {
seed[i] = secureRandomGenerator.nextInt(Integer.MAX_VALUE);
}
randomGenerator = new MersenneTwister(seed);

我有两个疑问

1) 将种子设置为 SHA1PRNG 是坏主意还是好主意?

2)如果这是个好主意,为 SHA1PRNG 设置种子以提高不可预测性的最佳方法是什么?

最佳答案

我认为如果它只是种子,那么每次应用程序启动时您只使用它一次,所以这不是一个大的安全问题。任何好的安全随机算法(包括 SHA1PRNG)对于种子来说都是很好的。最有问题的地方是梅森扭曲器本身。至少,无论 Wikipedia 中所述的种子来源如何,它的原始实现都是不安全的。 :

The algorithm in its native form is not cryptographically secure. The reason is that observing a sufficient number of iterations (624 in the case of MT19937, since this is the size of the state vector from which future iterations are produced) allows one to predict all future iterations.

因此,无论种子来源如何,如果攻击者设法从中获取足够的数量,梅森扭曲器都可能受到损害。

关于java - JDK 1.7 安全随机生成器播种和不可预测性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32120912/

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