不可预测的伪RNG

Unpredictable pseudo-RNG

本文关键字:RNG 不可预测      更新时间:2023-10-16

我正在为学校C++做一个密码学项目,我需要一种方法来生成其他人("猜"种子)无法再生的随机数。
准确地说,我需要一个纯粹的随机生成器,或者一种获得 100% "安全"种子的方法。我已经做了一些研究和思考,我找到了两种方法,第一种方法是用当前时间初始化种子,但这让我担心"黑客"可能会发现生成密钥的时刻,然后他们就会拥有种子, 因此将能够预测下一个生成的数字。我发现的第二种方法是向用户索要种子。
现在,如果我不希望用户生成密钥怎么办?我对基于时间的种子的担忧还是纯粹的偏执狂?有没有人有机会获得代码的执行时刻?或者也许还有其他我错过的方法吗?
旁注:我正在使用<random>中的random_default_engine

>user1095108 的想法是正确的,但注释可能太短了。

要求用户随机键入内容。每个字符大约是 1 位随机性。用户在选择随机字符方面非常糟糕。但是,您需要大约 40-50 位。

但是,用户在以确切的节奏打字方面也非常糟糕。每次击键的时间都会增加额外的随机性,具体取决于操作系统报告该随机性的准确性。使用毫秒级分辨率,10 次击键就足够了。