Подтвердить что ты не робот

RNGCryptoServiceProvider в .Net Core

Я не могу найти класс System.Security.Cryptography.RNGCryptoServiceProvider в .NetCore.

Это важно для приложения, которое я пытаюсь выполнить с помощью .Net Framework, поскольку он используется для генерации вектора инициализации для шифрования.

Существует ли это под другим именем или существует другой способ достижения этой функциональности?

4b9b3361

Ответ 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).

Ответ 3

Мы можем сделать это так в ядре .Net. Это сработало для меня.

RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
var byteArray = new byte[4];
provider.GetBytes(byteArray);

//convert 4 bytes to an integer
var randomInteger = BitConverter.ToUInt32(byteArray, 0);

Он присутствует в пространстве имен: System.Security.Cryptography

добавьте это в свой класс, чтобы использовать метод: using System.Security.Cryptography;

Надеюсь, что это полезно. Спасибо