gpt4 book ai didi

python - 如何在 python 中创建一个加密安全的随机数?

转载 作者:行者123 更新时间:2023-12-02 04:35:07 24 4
gpt4 key购买 nike

我正在用python制作一个项目,我想创建一个加密安全的随机数,我该怎么做?我在网上读到,常规随机发生器生成的数字在密码学上并不安全,函数 os.urandom(n)返回我一个字符串,而不是一个数字。

最佳答案

由于您想生成某个特定范围内的整数,因此使用 random.SystemRandom 会容易得多。而是上课。创建该类的实例会为您提供一个支持 random 的所有方法的对象。模块,但使用 os.urandom()在被子下。例子:

>>> from random import SystemRandom
>>> cryptogen = SystemRandom()
>>> [cryptogen.randrange(3) for i in range(20)] # random ints in range(3)
[2, 2, 2, 2, 1, 2, 1, 2, 1, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0]
>>> [cryptogen.random() for i in range(3)] # random floats in [0., 1.)
[0.2710009745425236, 0.016722063038868695, 0.8207742461236148]
等等使用 urandom()直接地,您必须发明自己的算法来将它产生的随机字节转换为您想要的结果。不要那样做 ;-) SystemRandom为你做。
请注意文档的这一部分:

class random.SystemRandom([seed])

Class that uses the os.urandom() function for generating random numbers from sources provided by the operating system. Not available on all systems. Does not rely on software state and sequences are not reproducible. Accordingly, the seed() and jumpahead() methods have no effect and are ignored. The getstate() and setstate() methods raise NotImplementedError if called.

关于python - 如何在 python 中创建一个加密安全的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com