2016-01-03 20 views
0

所以我想获得一个密码强的随机数生成器......事情是,由于某些原因,我仍然希望能够将随机种子分配给生成器(如果需要,它可能是一个相对较大的种子)。随机模块的随机性和提供的种子之间的关系

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

回答

2

若用强加密随机发生器(如pycrypto的随机模块,或random.SystemRandom)以产生用于常规的Python随机模块随机种子,将在随机模块具有足够的随机性和熵被加密考虑强大?

号种子无论你使用不会使默认的伪随机数发生器(random.Random)到加密的强伪随机数发生器(random.SystemRandom)。见PEP 0506 -- Adding A Secrets Module To The Standard Library

+0

谢谢。因此,如果我需要一个仍然使用种子的强大随机源,那么随机抽取器或类似的算法将会是一条路吗? –

+0

@ someone-or-other:'random.SystemRandom' * by design *中没有种子。是否存在接受种子(可重现流)的CSPRNG是一个很好的问题(我的答案是*否,但它可能是一个具体的定义问题)。 – jfs

0

我发现了一个很好的手工获取随机数的来源:https://www.random.org/它们使用大气噪声生成随机数。此外,他们确实有一个API,所以也许这是一个选择。对于什么适合密码学目的,一般的看法是依赖于“真随机性”,它是硬件或物理随机性来源,优先于伪随机数发生器。你可以检查Diceware password generator的一些背景。