1

我正在使用 openssl 加密库,我对所有这些加密的东西都很陌生,而且我正在慢慢地学习所有这些。我对随机数生成器有疑问,我正在使用它RAND_pseudo_bytes()来生成伪随机数。我正在为它提供所需的熵的种子。但我的疑问是,如果我们提供两次相同的种子,随机数生成器会生成相同的随机数吗?

4

1 回答 1

2

伪随机数生成器是确定性的。然而,它们应该以难以生成循环的方式构造(如果它曾经到达先前的状态,它将生成相同的随机数,直到它进入下一个循环,没有结束)。

如果您使用相同的种子启动伪随机数生成器,它将生成相同的输出。这是 Ubuntu 中的一个问题,其中对静态代码分析的响应导致在播种期间删除任何随机数。

请注意,大多数伪随机数生成器在当前状态下混合了额外的种子/熵。因此,一旦伪随机数生成器播种良好,它将继续产生随机数。默认情况下,许多库确实通过良好的熵源(例如,或linux 系统上/dev/random的预播种)为随机数生成器播种。/dev/urandom

当然,测试也无妨。

于 2013-09-03T11:44:46.767 回答