我在皮尔密多中遇到了这个方法,它用于生成随机字节:
from Crypto import Random
Random.get_random_bytes(5)
我想知道这个方法与下面这样的简单生成器有什么不同:
import random
def get_random_bytes(N):
ASCII = "".join(chr(x) for x in range(255))
return "".join(random.choice(ASCII) for _ in range(n))
注意到:我的直觉是,Pycrypto方法在密码学上更像是“声音”。看看random
的文档,它说它是基于一个周期为2**19937-1
的生成器。看看Random.get_random_bytes
,它说它能够产生加密的强字节。这是什么意思?
当然,我希望使用库实现,而不是我自己的。我只想了解它背后的密码学概念。
发布于 2014-03-14 03:31:31
对于加密安全的随机数生成器,任何输出序列都不会为您提供下一个输出的信息。
随机是基于Mersenne Twister。它的内部状态为624 32位数.给定1248个值的输出,您可以在某个点了解整个状态。由此,你可以用100%的准确性来决定未来的所有输出。
https://stackoverflow.com/questions/22395478
复制相似问题