【问题标题】:C++ Microphone Input As A Random SeedC++ 麦克风输入作为随机种子
【发布时间】:2014-12-03 21:48:05
【问题描述】:

我目前正在玩一些密码学(在这种情况下是 RSA 公钥),为了生成随机密钥,我需要一个随机输入。我认为麦克风将是相对不可复制数据的良好来源。有没有办法以一种可以用来播种 srand 的方式从麦克风中读取原始数据?有没有更好的方法来获得纯随机种子,如果有,我该怎么做?

我在带有内置麦克风的笔记本电脑上运行 Windows 8,并且使用的是 g++ 编译器。

【问题讨论】:

  • 有很多关于生成随机数的帖子。尝试先搜索它们。如果您打算使用麦克风,似乎也有很多关于读取麦克风输入的帖子。当您尝试将它们放在一起时,请更新此问题或发布另一个包含任何剩余特定问题的问题。
  • 如果 srand 你的意思是 c 标准库函数,那么不要使用它。 c 的 rand 很糟糕,即使您只需要统计上好的随机数,更不用说安全性了。

标签: c++ random cryptography microphone


【解决方案1】:

不要不要尝试自己从硬件中获取种子。操作系统比你更了解如何获得高质量的随机性。

在Linux上,正确的方法是读/dev/urandom(不是/dev/random;实际上一文不值)

在 Windows 上,Google 指示您应该使用 CryptGenRandom 函数。

【讨论】:

  • 从例如添加一些额外的熵几乎没有什么害处。熵CryptGenRandom 提供的麦克风。查看 Fortuna CSRNG 的代码,了解如何混合来自不同来源的熵。请花时间检查您提出的来源的随机性。
猜你喜欢
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 2020-07-02
  • 2014-01-01
  • 2011-04-29
  • 2014-02-07
  • 2011-08-09
  • 1970-01-01
相关资源
最近更新 更多