gpt4 book ai didi

python - 用于 python 的可播种 CSPRNG?

转载 作者:行者123 更新时间:2023-12-04 14:59:03 28 4
gpt4 key购买 nike

使用 random 模块,您可以对其进行播种以每次都获得相同的值。

import random

random.seed(1)
print(random.randint(1,100)) # outputs 18 every time

lst = [1,2,3]
random.shuffle(lst)
print(lst) # [2, 3, 1] every time

是否有 CSPRNG 可以做到这一点?比如根据这个问题How can I create a random number that is cryptographically secure in python? , random.SystemRandom 是安全的。但是播种它不会返回相同的东西。

from random import SystemRandom

s = SystemRandom()
s.seed(1)
print(s.randint(1,100)) # 81, 16, 100, 58

lst = [1,2,3]
s.shuffle(lst)
print(lst) # [1, 3, 2], [3, 2, 1]

这样的 CSPRNG 存在吗?或者这是否否定了安全方面?

最佳答案

randomgen 包提供与 NumPy 兼容的 CSPRNG,例如ChaCha可以用作:

import numpy as np
from randomgen import ChaCha

rg = np.random.Generator(ChaCha(seed=1234, rounds=8))
rg.integers(1, 100)

注意事项:

  • 我使用的是减少轮数的变体,20 轮比较正常,但 8 轮似乎足以满足大多数目的
  • randomgen 提供了它自己的 Generator,但它是 deprecated and moving into numpy

关于python - 用于 python 的可播种 CSPRNG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67320753/

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