C++ C++;作为随机种子的麦克风输入

C++ C++;作为随机种子的麦克风输入,c++,random,cryptography,microphone,C++,Random,Cryptography,Microphone,我目前正在使用一些加密技术(在本例中是RSA公钥),为了生成一个随机密钥,我需要一个随机输入。我认为麦克风将是相对不可复制数据的良好来源。是否有任何方法可以从麦克风中读取原始数据,并将其用作种子srand?有没有更好的方法来获得一个纯粹的随机种子?如果有,我会怎么做 我在一台装有内置麦克风的笔记本电脑上运行Windows 8,我使用的是g++编译器。Donot试着自己从硬件中获取种子。操作系统比你更了解如何获得高质量的随机性 在Linux上,正确的方法是读取/dev/uradom(而不是/dev

我目前正在使用一些加密技术(在本例中是RSA公钥),为了生成一个随机密钥,我需要一个随机输入。我认为麦克风将是相对不可复制数据的良好来源。是否有任何方法可以从麦克风中读取原始数据,并将其用作种子srand?有没有更好的方法来获得一个纯粹的随机种子?如果有,我会怎么做


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

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

在Linux上,正确的方法是读取
/dev/uradom
(而不是
/dev/random
;它实际上毫无价值)


在Windows上,Google建议您使用
CryptGenRandom
函数。

有很多关于生成随机数的帖子。首先尝试搜索它们。如果您打算使用麦克风,那么关于读取麦克风输入的帖子似乎也很多。当您尝试将这些问题组合在一起时,请更新此问题或发布另一个问题,其中包含任何剩余的特定问题。if by
srand
可能与if重复您指的是c标准库函数,请不要使用它。c的
rand
即使你只需要统计上好的随机数也很糟糕,更不用说安全性了。在
CryptGenRandom
提供的熵中添加一些额外的熵,例如麦克风,也没有什么害处。查看Fortuna CSRNG的代码,了解如何混合来自不同来源的熵。一定要花时间检查一下你提议的来源有多随机。