不可预测的伪RNG

时间:2013-12-18 12:57:15

标签: c++ random rsa

我正在为学校开展C ++加密项目,我将需要一种方法来生成无法由其他人(“猜到”种子)重新生成的随机数。
确切地说,我需要一个纯粹的随机发生器,或者一种获得100%“安全”种子的方法。我已经做了一些研究和思考,并且我已经找到了两种方法可以做到这一点,第一种做法是用当前时间初始化种子,但这让我想到担心“黑客”可能会发现生成密钥的那一刻,然后他们就会拥有种子,因此能够预测下一个生成的数字。我发现的第二种做法是向用户询问种子 现在,如果我不希望用户生成密钥怎么办?我是否担心基于时间的种子成立或他们只是纯粹的偏执狂?有没有人有机会获得代码的执行时间?或者是否有其他方法可以做到我错过了? 旁注:我正在使用random_default_engine

中的<random>

1 个答案:

答案 0 :(得分:2)

user1095108有正确的想法,但评论可能太短了。

要求用户随意输入内容。每个字符大约有1位随机性。用户选择随机字符非常糟糕。然而,你需要大约40-50位。

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