2014-10-09 70 views
1

我目前正在玩一些密碼學(RSA公鑰,在這種情況下),併爲了生成一個隨機密鑰,我需要一個隨機輸入。我認爲麥克風對於相對不可複製的數據來說是一個很好的來源。有沒有什麼方法可以用來播種麥克風的方式讀取麥克風的原始數據?有沒有更好的方法來獲得一個純粹的隨機種子,如果是的話,我會怎麼做?C++麥克風輸入作爲隨機種子

我在帶有內置麥克風的筆記本電腦上運行Windows 8,並使用g ++編譯器。

+0

有很多關於生成隨機數的文章。嘗試先搜索它們。如果你打算使用麥克風,那麼似乎有很多關於麥克風輸入的文章。當您嘗試將它們放在一起時,請更新此問題或發佈其他問題。 – 2014-10-09 04:35:39

+0

[C++隨機浮點數生成]的可能重複(http://stackoverflow.com/questions/686353/c-random-float-number-generation) – 2014-10-09 04:37:58

+0

如果用'srand'表示c標準庫函數,那麼不要不會使用它。即使你只需要統計上很好的隨機數字,c的「rand」也很糟糕,而不是安全問題。 – CodesInChaos 2014-10-09 12:30:11

回答

1

不是試圖從硬件自己得到種子。操作系統比你更瞭解如何獲得高質量的隨機性。

在Linux上,正確的方法是閱讀/dev/urandom(不/dev/random;它實際上是毫無價值)

在Windows中,谷歌表示,你應該使用CryptGenRandom功能。

+0

添加一些額外的熵,例如,一個麥克風到熵'CryptGenRandom'提供。查看Fortuna CSRNG的代碼,瞭解如何混合來自不同來源的熵。花時間檢查你提出的來源是多麼隨意。 – rossum 2014-10-10 11:44:18