我在.NetCore中找不到System.Security.Cryptography.RNGCryptoServiceProvider类。
我试图从.Net Framework移植的应用程序是必不可少的,因为它用于生成加密的初始化向量。
它是否以不同的名称存在,或者是否有另一种方法来实现此功能?
答案 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;
希望它对您有所帮助。 谢谢