随机数发生器和种子

时间:2013-08-21 05:15:39

标签: random openssl

我正在使用openssl加密库,我是所有这些加密内容的新手,慢慢地我正在学习所有这些。我对随机数生成器有疑问,我使用RAND_pseudo_bytes()生成伪随机数。我用我需要的熵为它提供种子。但我怀疑的是,如果我们提供两次相同的种子,随机数生成器会产生相同的随机数吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

当然,测试没有坏处。