我在堆栈溢出时遇到了这个问题: How to randomly selection item from a list in Python 他们提到该密码不适用于加密/安全目的。
因此,我在官方文档中找到了此页面:random - Generate pseudorandom numbers
它提到他们使用梅森扭曲器生成随机数。
梅森扭曲者不是应该是一个相当不错的随机生成器吗(至少在课堂上有人告诉我)?那么为什么不能出于安全目的使用它呢?
答案 0 :(得分:1)
梅森·扭曲者在模仿随机性的统计特性(*)方面做得很不错,但这是一种确定性算法。如果将两个副本设置为相同状态,则它们将在同步中产生相同的结果。这意味着如果攻击者可以确定您的初始状态,那么对于加密/安全应用程序来说,您的安全性就会受到威胁。我已经读过,对于MT,这可以由知识渊博的人经过六百次顺序观察后完成。
底线-用于蒙特卡洛采样或随机模型,而不用于加密。
(*)-实际上,Pierre L'Ecuyer被认为是伪随机数生成的最重要的研究者之一,即使是在蒙特卡洛使用时,他也不喜欢MT。他已经表明,虽然整个周期是均匀分布的,但内部状态中的零趋于持久,并且生成器可能会“卡住”不均匀子序列中的较大子周期。他与Mersenne Twister的创建者合作,在WELL generator中解决了这些问题。