.Net Core中的RNGCryptoServiceProvider

时间:2016-07-28 09:45:25

标签: cryptography .net-core

我在.NetCore中找不到System.Security.Cryptography.RNGCryptoServiceProvider类。

我试图从.Net Framework移植的应用程序是必不可少的,因为它用于生成加密的初始化向量。

它是否以不同的名称存在,或者是否有另一种方法来实现此功能?

3 个答案:

答案 0 :(得分:48)

System.Security.Cryptography.RandomNumberGenerator是加密安全伪随机数生成器(CSPRNG)实现的基类。在.NET Framework RandomNumberGenerator.Create()中返回<button id = "button1" type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal1" >I play these games</button> 实例(除非CryptoConfig配置不同)。在.NET Core RNGCryptoServiceProvider中返回一个opaque类型,它基于BCryptGenRandom(Windows)或OpenSSL的随机数生成器(!Windows)。

RandomNumberGenerator.Create()是在.NET Core上获取RNG实例的唯一方法,因为它适用于.NET Core和.NET Framework,是最便携的。

当然,如果你正在生成一个IV,你也可以调用实例方法SymmetricAlgorithm.GenerateIV()让它在内部使用CSPRNG;虽然正如文档所述,调用它是不必要的,因为随实例创建随机IV(RandomNumberGenerator.Create()可用于强制它在下一次调用GenerateIV之前生成新的实例)。

答案 1 :(得分:8)

建议的解决方案之一是使用RandomNumberGenerator.Create() https://github.com/dotnet/corefx/issues/2881

答案 2 :(得分:0)

我们可以在.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

将此添加到您的类中以使用方法: 使用System.Security.Cryptography;

希望它对您有所帮助。 谢谢