如果二进制文件是通过while(1)连续创建的,给定无限的时间,是否可以生成每个字节数组的事例数而不重复?
您所描述的不是随机的。当某件事是随机的,它就有机会重复它自己。如果你看看这个维基百科页面的潜在问题部分,它会解释安全专业人员在随机数生成器中寻找什么。
那么os.urandom
有多随机?文件上说的第一件事是
返回适合加密使用的大小为随机字节的字符串。
任何声明可以用于加密的东西都是非常好的随机数据来源。在Linux上,它使用/dev/urandom
,其中包含来自鼠标移动、网络流量等的随机数据。
在Windows上,使用cryptgenrandom
,这已被Windows弃用,可能有一些弱点,但算法的具体工作方式尚不清楚,Python仍在使用它,并声称它在加密方面仍然安全,因此♂️.
有几个模块是用来生成你可能感兴趣的随机数的。有一个随机模块,它具有random.random等函数,可以生成快速随机数。这些不是随机的,但它们生成速度很快。然后,当你想要好的随机数时,你可以继续使用os.urandom
,但也有一个模块专门用于创建加密随机数,使用相同的/dev/urandom
数据源。这个模块被称为机密模块。
如果你真的想知道使用/dev/urandom
有多安全;铀元素研究";提出了这样一个193页的研究结果!如果你真的想读的话,你可以阅读。所以,是的,如果安全专业人员对它进行了很好的分析,然后宣布它可以安全用于加密,我认为我们可以信任它。