RandomNumberGeneratorの MSDN ドキュメントによると:
アプリケーション コードは、このクラスを直接使用しません。この抽象クラスは、すべての暗号乱数ジェネレーターの基本クラスとして提供されます。
暗号乱数ジェネレーターの実装には、派生クラス RNGCryptoServiceProvider を使用します。
ただし、次のコードがさまざまなコード ベースでいくつかの機会に使用されているのを見てきました。
byte[] bytes = new byte[...];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(bytes);
最も顕著なのはStackExchange (SOが含まれていると思います) とBCrypt.Netです。
したがって、私は少し混乱しています -RandomNumberGenerator
上記のコードはどのタイプを返しますか? また、一部のコード ベースがRandomNumberGenerator
ではなく使用しているのは、ちょっとした欠陥RNGCryptoServiceProvider
ですか?
ここRandomNumberGenerator.Create()
では完全に欠落しているフードの下でやっていると思いますが、技術的には (抽象クラスであるため)、上記のコードはエラーをスローするべきではありませんか?