随机模块的随机性和提供的种子之间的关系

Relation between random module's randomness and a supplied seed

所以我正在尝试获得一个加密强度高的随机数生成器...问题是,出于某些原因,我仍然希望能够为生成器分配一个随机种子(它可以是一个相对较大的必要时播种)。

所以鉴于此...如果使用密码学上强大的随机生成器(如 pycrypto 的随机模块,或 random.SystemRandom)为常规 python 随机模块生成随机种子,随机模块是否具有足够的随机性和熵以被认为具有强大的密码学能力?

我找到了一个很好的手动获取随机数的来源:https://www.random.org/ 他们使用大气噪声生成随机数。此外,他们确实有一个 API,所以也许这是一个选项。

就适合加密目的而言,一般的智慧是依赖 "true randomness," 即硬件或物理随机源而不是伪随机数生成器。您可以查看 Diceware password generator 了解一些背景信息。

If one uses a cryptographically strong random generator (like pycrypto's random module, or random.SystemRandom) to generate a random seed for the regular python random module, will the random module have sufficient randomness and entropy to be considered cryptographically strong?

没有。无论您使用什么种子,都不会将默认的伪随机数生成器 (random.Random) 变成加密强度高的伪随机数生成器 (random.SystemRandom)。参见 PEP 0506 -- Adding A Secrets Module To The Standard Library