谁能提出一个好的(CS)PRNG算法,利用一个非常大的(理想的任意大的)种子?我想使用几千字节,也许是几百千字节的随机数据来生成几十兆字节的PRNG输出。我所知道的PRNG算法只需要相对较小的种子:我想充分利用我所拥有的随机输入数据。
发布于 2012-07-24 18:55:52
您正在做的事情听起来很像许多系统上的/dev/随机和/dev/urandom或珠三角:这些系统接受任意大的数字序列(如果有真正的硬件随机数发生器,或者来自环境噪声,如击键定时),并将其输入CSPRNG;输出通过/dev/随机和/dev/urandom提供。
也许您可以以某种方式提取其中任何一个系统的源代码实现,并使用户级的变体,而不是从环境源获得的输入,只从您的大种子输入。
发布于 2012-07-23 19:25:40
Barak和Halevi提议的PRNG应该能够满足您的需要并提供足够的安全性。
他们的PRNG有一个API next和refresh。refresh使用任意长的字符串,并使用它更新PRNG的内部状态。next返回一定数量的随机字节(如果需要更多字节,只需连续调用next )。
它们证明了它们的PRNG的一些非常好的特性(它们共同定义了PRNG的健壮性),并给出了具体的实现。
整篇论文绝对值得一读。
发布于 2012-07-29 07:26:21
别费神。以任何密码安全的CSPRNG为例。给它一个随机密钥(确保密钥长度至少为128位)。你的任务完成了。一旦密钥长度为128位左右,任何额外的长度都没有意义。
如果你有一个一千位的种子,先把它打散,把它缩小到你的CSPRNG键的正确大小--但是要确保你的种子中至少有那么多的熵。或者,更好的是,使用安全的伪随机数字生成器(如/dev/urandom或CryptGenRandom )生成密钥。
https://crypto.stackexchange.com/questions/3257
复制相似问题