【发布时间】:2018-10-12 08:05:25
【问题描述】:
这是生成n 加密随机字节的有效方法吗?
def cryptographically_secure_random_bytes(n):
return ''.join(chr(random.SystemRandom().randint(0,256)) for _ in range(n))
我知道random.SystemRandom() 与os.urandom() 相同,而且我知道os.urandom() 绝对是一种生成随机数的密码安全方式。
但是,chr(random.SystemRandom().randint(0,256)) 部分让我有点失望。由于chr() 不支持unicode,我假设这个函数正在丢弃一些原本由random.SystemRandom() 生成的字符。
我也不确定randint(0,256) 会怎么想,因为那是一个字节的大小。
【问题讨论】:
-
我认为 randint 的上限是包容性的。因此,如果返回 256,从技术上讲,您的 randint 可能超过一个字节。
标签: python random cryptography