Secrets 模块如何在 Python 中生成完美的随机序列

2023-11-30

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

import secrets

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

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


The 的文档secrets module表示它产生“适合管理密码、帐户身份验证、安全令牌和相关秘密等数据的加密强度强的随机数”。该文档没有具体说明它是如何准确执行的。

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

  • 如何获得真正的随机数据,而不是像 CSRNG 那样将随机数据输入到 PRNG 种子中?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Secrets 模块如何在 Python 中生成完美的随机序列 的相关文章

随机推荐