首页 > 解决方案 > 在 Python 中,secrets 模块如何制作完美的随机序列

问题描述

现在我对数学有了不错的了解,而且我知道可以使用特定的数学算法创建伪随机序列。我也知道在 Python 中,有一个secrets模块显然可以产生随机数。我尝试对其进行一些调整,但我仍然不明白它应该如何工作。让我们说这段代码:

import secrets

secret_num = secrets.choice([1, 2, 3])
print(secret_num)

它应该输出一个完全随机的数字。但是使用计算机怎么可能呢?

标签: python-3.xrandom

解决方案


模块的文档secrets称,它产生“适用于管理密码、帐户身份验证、安全令牌和相关机密等数据的加密强随机数”。该文档没有具体说明它是如何做到的。

然而,“加密强随机数”的一个通常要求是它们应该很难被外部攻击者猜到。为此,该secrets模块可能依赖于操作系统提供的随机数生成器(secrets.SystemRandom例如,如此),而生成器的工作方式又取决于操作系统。但总的来说,为信息安全设计的随机数生成器最终依赖于从非确定性来源收集难以猜测的位,如以下问题中进一步解释的那样:


推荐阅读