Ответ 1
System.Security.Cryptography.RandomNumberGenerator
является базовым классом для реализаций Cryptographically-Secure Pseudo-Random Number Generator (CSPRNG). В .NET Framework RandomNumberGenerator.Create()
возвращает экземпляр RNGCryptoServiceProvider
(если не настроено по-другому CryptoConfig
). В .NET Core RandomNumberGenerator.Create()
возвращается непрозрачный тип, основанный на генераторе случайных чисел (! Windows) или генератора случайных чисел OpenSSL (! Windows).
RandomNumberGenerator.Create()
- единственный способ получить экземпляр RNG на .NET Core, и поскольку он работает как на .NET Core, так и на .NET Framework, это самый портативный.
Конечно, если вы генерируете IV, вы также можете просто вызвать метод экземпляра SymmetricAlgorithm.GenerateIV()
, чтобы он использовал CSPRNG внутри; хотя, как говорится в документации, вызов не нужен, так как случайный IV создается с помощью экземпляра (GenerateIV
может использоваться для принудительного создания нового до следующего вызова CreateEncryptor
).