Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python的3 random.random是否足够安全,如果在每次使用之前使用高熵种子?_Python 3.x_Security_Random - Fatal编程技术网

Python 3.x Python的3 random.random是否足够安全,如果在每次使用之前使用高熵种子?

Python 3.x Python的3 random.random是否足够安全,如果在每次使用之前使用高熵种子?,python-3.x,security,random,Python 3.x,Security,Random,Python的3 random.random是否足够安全,如果在每次使用之前使用高熵种子?除了验证分布形状外,如何知道和验证 所以问题是关于使用random.random将一些熵源转换为数组项中的许多选择 比如说,我们有一本9k单词的字典,想要随机选择18个单词。我们不希望任何其他人能够通过玩蟒蛇的random.random找到它们 dic = ["word1", "word2", ... , "word19k"] while(true): seed = os.urandom(50) r

Python的3 random.random是否足够安全,如果在每次使用之前使用高熵种子?除了验证分布形状外,如何知道和验证

所以问题是关于使用random.random将一些熵源转换为数组项中的许多选择

比如说,我们有一本9k单词的字典,想要随机选择18个单词。我们不希望任何其他人能够通过玩蟒蛇的random.random找到它们

dic = ["word1", "word2", ... , "word19k"]
while(true):
  seed = os.urandom(50)
  random.seed(seed)
  print(random.choice(dic))
:

警告:此模块的伪随机生成器不应用于安全目的。如果需要加密安全的伪随机数生成器,请使用os.URADOM或SystemRandom

正如在问题的评论中所述,为加密目的生成随机数的更好、更安全的方法是os.uradom

链接问题的示例代码

>>> import os
>>> os.urandom(10)
'm\xd4\x94\x00x7\xbe\x04\xa2R'
>>> type(os.urandom(10))
<type 'str'>
>>> map(ord, os.urandom(10))
[65, 120, 218, 135, 66, 134, 141, 140, 178, 25]
:

警告:此模块的伪随机生成器不应用于安全目的。如果需要加密安全的伪随机数生成器,请使用os.URADOM或SystemRandom

正如在问题的评论中所述,为加密目的生成随机数的更好、更安全的方法是os.uradom

链接问题的示例代码

>>> import os
>>> os.urandom(10)
'm\xd4\x94\x00x7\xbe\x04\xa2R'
>>> type(os.urandom(10))
<type 'str'>
>>> map(ord, os.urandom(10))
[65, 120, 218, 135, 66, 134, 141, 140, 178, 25]

好的,在询问其他地方之后,如果随机生成器产生均匀分布,那么整个操作是无用的,但不会引入安全风险

如问题中所述,如果随机生成器为每一代添加新种子。这就像应用一个简单的无用转换x=>fx

如果使用高熵并将其传递给python random.random ou random.choice,那么对这个问题的回答非常简单,它与种子质量一样安全。我不建议将此更改作为运行系统的高优先级更改


回答的另一部分是:不要那样做,那是没有用的。使用更好的方法来保护pick,而不是random.choice。

好的,在询问其他地方后,如果随机生成器生成均匀分布,则整个操作是无用的,但不会带来安全风险

如问题中所述,如果随机生成器为每一代添加新种子。这就像应用一个简单的无用转换x=>fx

如果使用高熵并将其传递给python random.random ou random.choice,那么对这个问题的回答非常简单,它与种子质量一样安全。我不建议将此更改作为运行系统的高优先级更改


回答的另一部分是:不要那样做,那是没有用的。使用更好的方法保护pick,而不是random.choice。

Thx COLDSPEED的可能副本,这不是我要搜索的,尽管我知道这是一个更好的解决方案。我有一个系统,需要花费很多钱来改变,并且使用非常高熵的种子来随机播种。所以我需要在做出选择之前评估安全性。这取决于你所说的高熵种子是什么意思。如果熵如此之高,以至于种子是真正随机的,并且是从大范围中提取的,那么它当然是安全的,但是在那个阶段Python随机数生成器变成了多余的中间人。Thx COLDSPEED的可能复制品,这不是我要搜索的,尽管我知道它是一个更好的解决方案。我有一个系统,需要花费很多钱来改变,并且使用非常高熵的种子来随机播种。所以我需要在做出选择之前评估安全性。这取决于你所说的高熵种子是什么意思。如果熵如此之高,以至于种子是真正随机的,并且是从一个大范围中提取的,那么它当然是安全的,但是在那个阶段Python随机数生成器变成了一个多余的中间人。您好,非常感谢,这并不正是我所需要的,因为我非常清楚有更好的方法可用。我修改了问题代码示例,将您的解决方案作为random.random的种子引入。我有一个系统,需要花费很多钱来改变,并使用非常高的熵种子来种子随机。随机,所以我需要在做出选择之前评估安全性。当做出错误的选择时,需要付出代价来纠正它们。嗨,非常感谢,这并不完全是我所需要的,因为我非常清楚有更好的方法可用。我修改了问题代码示例,将您的解决方案作为random.random的种子引入。我有一个系统,需要花费很多钱来改变,并且使用非常高的熵种子来随机种子。随机,所以我需要在做出选择之前评估安全性。当做出错误的选择时,纠正它们是有成本的,支付成本。