我在.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'是否返回密碼安全的隨機數?如果是這樣,爲什麼和如何?請注意,只有鏈接的答案通常是「皺眉」。 –