1. ホーム
  2. c#

[解決済み] System.Security.Cryptography.RandomNumberGenerator の代わりに C# クラス System.Random を使用する理由は何ですか?

2023-03-24 23:40:54

疑問点

の乱数生成器を使うのはなぜですか? System.Random の暗号化された安全な乱数ジェネレータを使用する代わりに、まったく使用しないのでしょうか? システム.セキュリティ.暗号.乱数ジェネレータ (または RandomNumberGenerator が抽象的であるためそのサブクラス) の暗号化された安全な乱数ジェネレータを常に使用するのではなく、すべて使用するのですか?

Nate LawsonはGoogle Tech Talkのプレゼンテーションで、"と伝えています。 暗号の逆襲 13:11 で、Python、Java、および C# の乱数ジェネレータを使用せず、代わりに暗号的に安全なバージョンを使用するようにと述べています。

私は、2 つのバージョンの乱数ジェネレータの違いを知っています ( 質問 101337 ).

しかし、常に安全な乱数生成器を使用しない根拠は何でしょうか?なぜ System.Random をまったく使わないのでしょうか? おそらくパフォーマンスでしょうか?

どのように解決するのですか?

速度と意図 乱数を生成していて、セキュリティの必要がないのなら、なぜ遅い暗号関数を使うのでしょうか?あなたはセキュリティを必要としないのに、なぜ他の誰かに、その番号が安全な何かに使われるかもしれないと思わせるのでしょうか?