2013-08-21 231 views
1

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

+0

您可能会在[crypto.stackexchange.com](http://crypto.stackexchange.com) – Joe

+1

中找到知道此问题答案的人。如果种子相同,则应该生成相同的序列。 – doptimusprime

+1

@Joe:这个问题对于crypto.SE来说并不是很合适,尽管在这里被问到的方式让人有点难以辨认:“加密PRNG如何工作?”对于crypto.SE来说是一个很好的问题(除了可能有点太宽泛); “OpenSSL PRNG如何工作?”在主题上会略微有些变化,而“我如何使用OpenSSL PRNG?”将加密的主题。这里问的这个问题看起来有点像第二种类型,但它背后的[真正的问题](http://crypto.stackexchange.com/q/9983)更接近最后一个。 –

回答

2

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

如果你开始使用与它相同的种子的伪随机数发生器产生相同的输出。这是Ubuntu中的一个问题,静态代码分析的响应导致在播种过程中删除任何随机数。

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

当然,它不会受到伤害测试。

+0

我的回答有什么问题,jithin? –