【发布时间】:2013-02-06 21:02:26
【问题描述】:
有人问我:
使用您的树莓派,编写一个确定随机性的 Python 脚本 /dev/random 和 /dev/urandom。读取字节和直方图结果。 在 matplotlib 中绘图。你的答案包括 python 脚本。
我目前对“确定随机性”这一短语感到迷茫。
我可以从 urandom 和随机读取:
#rb - reading as binary
devrndm = open("/dev/random", 'rb')
#read to a file instead of mem?
rndmdata = devrndm.read(25) #read 25bytes
或
with open("/dev/random", 'rb') as f:
print repr(f.read(10))
我认为这个练习的目的是找出 urandom 比 random 更快并且拥有更大的池。但是,如果我尝试阅读超过 15 的任何内容,阅读时间似乎会成倍增加。
所以我现在不知道如何比较“随机性”。如果我将 urandom 和 random 都读取到各自的文件中,我该如何比较它们?
【问题讨论】:
-
以下内容和其中的链接可能是一个好的开始:en.wikipedia.org/wiki/Randomness_tests
-
我认为它们的意思是“读取字节并绘制结果直方图。在 matplotlib 中绘图。”。
-
虽然均匀分布并不代表随机性。
-
除非在启动的早期,否则您不会看到差异。见2uo.de/myths-about-urandom。您还可以通过使用带有 jitterentropy 源的 rngd 尽早添加更多熵。它已经在 Fedora 和 RHEL/CentOS 中了。不确定其他发行版。