【问题标题】:random number generator and seed随机数生成器和种子
【发布时间】:2013-08-23 08:19:05
【问题描述】:

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

【问题讨论】:

  • 你可能会在crypto.stackexchange.com找到知道这个问题答案的人
  • 如果种子相同,那么它应该生成相同的序列。
  • @Joe:这个问题不太适合 crypto.SE,尽管不可否认,这里的提问方式让人很难说:“加密 PRNG 是如何工作的?”对于 crypto.SE 来说是一个很好的问题(除了可能有点太宽泛了); “OpenSSL PRNG 是如何工作的?”将略带话题,而“如何使用 OpenSSL PRNG?”将是加密的主题。这里问的这个问题看起来有点像第二种类型,但它后面的the real question 更接近最后一种。

标签: random openssl


【解决方案1】:

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

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

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

当然,测试也无妨。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2011-02-08
    • 2021-05-15
    • 2015-03-14
    相关资源
    最近更新 更多