3

楽しみのために、私は暗号化の方法を実験してきました。私が使用している方法の1つには、シード値が必要です。真の乱数を送りたいのですが。たとえばC++でシードを取得する標準的な方法は、time(NULL)を呼び出すことですが、これは疑似乱数にすぎないため、真に乱数を収集する信頼できる方法があるかどうか疑問に思いました。唯一の制約は、C、C ++、およびJavaで実装できる必要があるということです。

前もって感謝します。

明確化:Ubuntuを実行している間、このコードはWindowsシステムを実行する必要があります。

4

4 に答える 4

3

それらはたくさんありますが、エントロピービットのソースは乱数ジェネレーターになるため、用語が混乱しています。あなたは実際に「疑似乱数」について考えています。

とはいえ、エントロピーソースにはさまざまなスキームがあります。多くの UNIX 系システムには /dev/random があり、キャッシュ サイズやメモリ コンテンツなどの物理プロセスに対してさまざまな魔法をかけて乱数を作成します。たとえば、放射性崩壊のイベント間時間を使用する、より強力な情報源があります。

Fourmilab.ch では、ここで実際の乱数を提供しています。

暗所に保管されたCCDはうまく機能します。

溶岩ランプはいいですね。

于 2012-01-26T19:45:49.937 に答える
1

システムによっては、完全にランダムなデータのソースにアクセスできる場合があります。たとえば、/dev/randomLinux では、暗号的に強力なランダム ビットのソースが提供されます。通常は遅いので、PRNG をシードするために使用するのは、真のランダム性が本当に必要ない場合に使用するのに適した方法です。

于 2012-01-26T19:52:43.280 に答える
1

高解像度のパフォーマンス カウンターを備えたマジックは、おそらく良いシードを与えるでしょう。特に、マルチコアシステム、異なるCPU負荷などを考慮すると.

于 2012-01-26T20:05:09.730 に答える
0

チャーリー・マーティンが言及しているように、真の乱数の優れたソースはカメラ (ビデオまたは静止画) です。デジタル カメラのピクセルの最下位ビットを使用し、それらを必要な長さの文字列に連結すると、優れた乱数ジェネレーターが得られます。

于 2012-01-26T20:30:18.327 に答える