[解決済み] SecureRandomジェネレータが遅い場合の対処法は?
質問
Javaで暗号的に強い乱数が欲しい場合は
SecureRandom
. 残念ながら
SecureRandom
は非常に遅くなることがあります。もし
/dev/random
の場合、十分なエントロピーが蓄積されるのを待つためにブロックされることがあります。このパフォーマンス・ペナルティを回避するにはどうすればよいのでしょうか?
を使用された方はいらっしゃいますか? 一般的でない数学 この問題の解決策としては?
このパフォーマンスの問題がJDK 6で解決されたことを確認できる人はいますか?
どのように解決するのですか?
もしあなたが真のランダムデータが欲しいのであれば、残念ながらそれを待つしかありません。これには、シードが
SecureRandom
PRNGです。Uncommon Mathsは真のランダムデータを集めるのに
SecureRandom
しかし、インターネットに接続して、特定のウェブサイトからシードデータをダウンロードすることは可能です。私の推測では、これは
/dev/random
それが利用できるところ。
PRNGを使いたい場合は、以下のようにします。
SecureRandom.getInstance("SHA1PRNG");
どのような文字列がサポートされているかは
SecureRandom
SPIプロバイダを使用すると、これらのプロバイダを列挙することができます。
Security.getProviders()
と
Provider.getService()
.
SunはSHA1PRNGが好きなので、広く利用されています。PRNGとして特別速いわけではありませんが、PRNGは数字を計算するだけで、エントロピーの物理的な計測をブロックするわけではありません。
例外は、もしあなたが
setSeed()
を最初に呼び出すと、PRNG は自分自身をシードします。
next()
または
nextBytes()
. これは通常、システムからのかなり少量の真のランダムデータを使用して行われます。この呼び出しはブロックされるかもしれませんが、乱数のソースは、PIDと一緒に現在時刻をハッシュし、27を追加し、最善を望みます"の任意のバリエーションよりもはるかに安全になります。ゲーム用の乱数が必要な場合や、テスト用に同じ種を使用して将来的にストリームを再現したい場合、安全でない種はまだ有用です。
関連
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
java 例外。Javaツールの初期化
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] 英数字のランダムな文字列を生成する方法
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
JQuery DataTable 详解
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
自動配線された依存性のインジェクションに失敗しました。
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
テストが見つかりませんでした
-
[解決済み】enumの値をintに変換する方法は?
-
[解決済み】java.util.Randomは本当にランダムなのか?どうやったら52! (階乗)可能な配列を生成することができますか?