不可预测的伪RNG
Unpredictable pseudo-RNG
我正在为学校C++做一个密码学项目,我需要一种方法来生成其他人("猜"种子)无法再生的随机数。
准确地说,我需要一个纯粹的随机生成器,或者一种获得 100% "安全"种子的方法。我已经做了一些研究和思考,我找到了两种方法,第一种方法是用当前时间初始化种子,但这让我担心"黑客"可能会发现生成密钥的时刻,然后他们就会拥有种子, 因此将能够预测下一个生成的数字。我发现的第二种方法是向用户索要种子。
现在,如果我不希望用户生成密钥怎么办?我对基于时间的种子的担忧还是纯粹的偏执狂?有没有人有机会获得代码的执行时刻?或者也许还有其他我错过的方法吗?
旁注:我正在使用<random>
中的random_default_engine
>user1095108 的想法是正确的,但注释可能太短了。
要求用户随机键入内容。每个字符大约是 1 位随机性。用户在选择随机字符方面非常糟糕。但是,您需要大约 40-50 位。
但是,用户在以确切的节奏打字方面也非常糟糕。每次击键的时间都会增加额外的随机性,具体取决于操作系统报告该随机性的准确性。使用毫秒级分辨率,10 次击键就足够了。
相关文章:
- 不可预测的C++睡眠/等待行为
- 超过 N 时出现不可预测的位移结果
- DirectShow CSourceStream::FillBuffer 暂停和查找后对第一帧的不可预测的调用数
- 多线程文件 IO 程序在线程数增加时行为不可预测
- 使用 std::find 查找从二进制文件中读取的字符并转换为 std::vector 中的 std::string<string> 会产生这种不可预测的行为?
- std::sleep_for在Windows 10上的不可预测行为
- 不可预测的文件描述符泄漏
- 循环程序的行为是不可预测的
- C++中不可预测的输出
- 当来自外部库的线程不可预测地崩溃我的应用程序时,我该怎么办
- 不可预测的伪RNG
- C++ 自定义运算符(+=) 的行为方式不可预测
- 如何优化间接基数排序?(又名如何优化不可预测的内存访问模式)
- 修复不可预测的崩溃
- 不可预测的指针行为
- wxWidgets 不可预测的 Seg 故障
- 当 cin.getline() 的第二个参数大于数组长度时,不可预测的字符串长度
- 子表达式求值顺序的不可预测性
- 将QString转换为const-char*时的不可预测的运行时行为
- Qt. QDateTime具有时区和附加秒的不可预测行为