В соответствии с документацией MSDN для RandomNumberGenerator:
Код приложения напрямую не использует этот класс. Этот абстрактный класс предоставляется в качестве базового класса для всех генераторов криптовальных случайных чисел.
Для реализации генератора криптографических случайных чисел используйте производный класс RNGCryptoServiceProvider.
Однако, я видел следующий код, используемый в нескольких случаях в разных базовых кодах:
byte[] bytes = new byte[...];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(bytes);
В первую очередь с StackExchange (который, как я предполагаю, включает SO), а также с BCrypt.Net.
Поэтому я немного смущен - какой тип RandomNumberGenerator
является приведенным выше кодом? Также является ли это недостатком, что некоторые базы кода используют RandomNumberGenerator
, а не RNGCryptoServiceProvider
?
Я предполагаю, что RandomNumberGenerator.Create()
делает под капотом, который я здесь полностью отсутствует, но технически (как абстрактный класс) не должен вызывать код выше ошибки?