最常被引用的随机性来源是 Windows 系统中的 CrypAPI。我可以在不使用 python 中的 API 的情况下从不同来源生成自己的熵吗?有这样的图书馆吗?我想修改生成过程并了解一些有关 RNG 的知识。
secrets
模块。
secrets 模块用于生成适用于管理密码、帐户身份验证、安全令牌和相关机密等数据的加密强随机数。
特别是,应优先使用 Secrets,而不是随机模块中默认的伪随机数生成器,该生成器是为建模和模拟而设计的,而不是安全或密码学。
例如,要收集 128 位熵,您可以执行以下操作:
import secrets
entropy = secrets.randbits(128)
当然,您可以从提供它的网站获得随机噪音,例如
https://www.random.org/strings/
“随机性来自大气噪声,在许多用途上,它比计算机程序中通常使用的伪随机数算法更好。”
沿着这条线,使用 BeautifulSoup 来废弃页面
import urllib2
from bs4 import BeautifulSoup
# specify the url
rng_page = ‘https://www.random.org/strings/'
# query the website and return the html to the variable ‘page’
page = urllib2.urlopen(rng_page)
# parse the html using beautiful soup and store in variable `soup`
soup = BeautifulSoup(page, ‘html.parser’)
....