gpt4 book ai didi

java - 加密安全 PRNG(伪随机数生成器)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:22:45 25 4
gpt4 key购买 nike

生成加密安全 PRNG 的最佳和最快算法是什么?我的要求如下。

  • 在每次运行中,我需要生成几百万个长度为 10 的数字。
  • 不应允许人们通过观察一定数量的迭代来预测 future 的迭代。
  • 数字应该是唯一的。不允许重复。
  • 速度也很重要,因为它会在每次迭代中生成数百万个数字。

我检查了Mersenne Twister算法,但它似乎不是加密安全的。他们说,可以通过检查 624 次迭代来预测。

附言如果有Java实现就更好了。

最佳答案

您的独特要求意味着您不能使用任何类型的 RNG(我之前的评论是错误的),因为随机数将包含重复项。相反,使用密码并加密数字:0、1、2、3 ...,这将保证提供唯一的结果。由于密码是可逆的,每个密文都会解密回原始明文,因此密文是明文的排列。

您还需要“长度为 10”的数字。我假设这意味着十进制数字,[1,000,000,000 .. 9,999,999,999]。这意味着您需要一个在 [0 .. 8,999,999,999] 范围内工作的密码,只需将 1e9 添加到输出即可。

那就更复杂了。要么使用 Hasty Pudding cipher ,可以为您想要的任何数字范围设置,或滚动您自己的 Feistel cipher其 block 大小设置为 2 的下一个更高次方。如果数字超出范围,则重新加密直到它在范围内。 Feistel 选项会更快,但安全性较低。您可以通过以降低速度为代价增加轮数来使其更安全。

关于java - 加密安全 PRNG(伪随机数生成器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31001626/

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