我在.NetCore中找不到System.Security.Cryptography.RNGCryptoServiceProvider类。.Net Core中的RNGCryptoServiceProvider
对于我正试图从.Net Framework移植的应用程序来说,它非常重要,因为它正在用于生成一个用于加密的初始化向量。
它是以不同的名称存在,还是有另一种实现此功能的方式?
我在.NetCore中找不到System.Security.Cryptography.RNGCryptoServiceProvider类。.Net Core中的RNGCryptoServiceProvider
对于我正试图从.Net Framework移植的应用程序来说,它非常重要,因为它正在用于生成一个用于加密的初始化向量。
它是以不同的名称存在,还是有另一种实现此功能的方式?
一种建议解决方案是使用RandomNumberGenerator.Create() https://github.com/dotnet/corefx/issues/2881
System.Security.Cryptography.RandomNumberGenerator
为密码安全伪随机数发生器(CSPRNG)实现的基类。在.NET Framework中,RandomNumberGenerator.Create()
返回RNGCryptoServiceProvider
实例(除非由CryptoConfig
进行了不同配置)。在.NET Core RandomNumberGenerator.Create()
中返回一个基于BCryptGenRandom(Windows)或OpenSSL的随机数生成器(!Windows)的不透明类型。
RandomNumberGenerator.Create()
是在.NET Core上获得RNG实例的唯一方式,因为它既可以在.NET Core上运行,也可以在.NET Framework上运行。
当然,如果你正在生成一个IV,你也可以调用实例方法SymmetricAlgorithm.GenerateIV()
让它在内部使用CSPRNG;尽管正如文档所述,调用它是不必要的,因为随着实例创建了一个随机IV(在下一次调用CreateEncryptor
之前,可以使用GenerateIV
强制它生成一个新的)。
这可能是正确的答案,但您需要指定*为什么*是这种情况。例如。 'RandomNumberGenerator'是否返回密码安全的随机数?如果是这样,为什么和如何?请注意,只有链接的答案通常是“皱眉”。 –