繁体   English   中英

Pycrypto的Random.get_random_bytes和一个简单的随机字节生成器有什么区别?

[英]What is the difference between Pycrypto's Random.get_random_bytes and a simple random byte generator?

我在Pycrypto中遇到了此方法,该方法用于生成随机字节:

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 ,它指出它能够生成加密强度高的字节。 这意味着什么?

当然,我希望使用库实现,而不是我自己的库实现。 我只想了解其背后的密码学概念。

对于密码安全的随机数生成器,任何输出序列都不会为您提供有关下一个输出将是什么的信息。

random基于Mersenne Twister。 它的内部状态为624个32位数字。 给定1248个值的输出,您将在某个时候知道整个状态。 据此,您可以100%准确地确定将来的所有输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM