Cryptography .Net核心中的RNGCryptoServiceProvider

Cryptography .Net核心中的RNGCryptoServiceProvider,cryptography,.net-core,Cryptography,.net Core,我在.NetCore中找不到System.Security.Cryptography.RNGCryptoServiceProvider类 这对于我尝试从.Net Framework移植的应用程序来说是至关重要的,因为它用于生成用于加密的初始化向量 它是否以其他名称存在,或者是否有其他方法实现此功能?建议的解决方案之一是使用RandomNumberGenerator.Create() 是加密安全伪随机数生成器(CSPRNG)实现的基类。在.NET Framework中,返回一个RNGCryptoS

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

这对于我尝试从.Net Framework移植的应用程序来说是至关重要的,因为它用于生成用于加密的初始化向量


它是否以其他名称存在,或者是否有其他方法实现此功能?

建议的解决方案之一是使用RandomNumberGenerator.Create() 是加密安全伪随机数生成器(CSPRNG)实现的基类。在.NET Framework中,返回一个
RNGCryptoServiceProvider
实例(除非由进行不同配置)。在.NET Core中,
RandomNumberGenerator.Create()
返回一个基于BCryptGenRandom(Windows)或OpenSSL的随机数生成器(!Windows)的不透明类型

RandomNumberGenerator.Create()
是在.NET Core上获取RNG实例的唯一方法,并且由于它同时在.NET Core和.NET Framework上工作,因此它是最可移植的


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

我们可以在.Net core中这样做。这对我有用

RNGCryptoServiceProvider=新的RNGCryptoServiceProvider();
var byteArray=新字节[4];
provider.GetBytes(byteArray);
//将4个字节转换为整数
var randomInteger=BitConverter.ToUInt32(byteArray,0);
它位于命名空间下:System.Security.Cryptography

将此项添加到类中以使用该方法: 使用System.Security.Cryptography

希望对你有帮助。
谢谢

这可能是正确的答案,但您需要说明原因。例如,
RandomNumberGenerator
是否返回加密安全的随机数?如果是,为什么和如何?请注意,仅链接的答案通常是“不赞成的”。