Dot-Net

.NET RSA.Create(String algName):algName 中有什麼?

  • August 14, 2015

根據 RSA 類的 MSDN 文件,有兩個RSA.Create() 方法。一種預設實現,另一種採用字元串參數“algName”。我無法在網上任何地方找到任何使用 RSA.Create(String) 版本的範例。

所以我的問題是:參數“algName”通常包含什麼?有哪些可以使用的算法?或者我在哪裡可以找到有關有效算法名稱的資訊?

你可以放任何你喜歡的東西,但我認為你需要自己實現它。.NET 框架中只有一種RSA開箱即用的算法實現,即RSACryptoServiceProvider. http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx

Create(String)方法繼承自AsymmetricAlgorithm,您可以向該方法傳遞相當多的值,請參閱http://msdn.microsoft.com/en-us/library/bf2t8ayw.aspx以獲取完整列表…

.NET 加密 API 的各種 Create 方法旨在與machine.config文件和 System.Security.Cryptography.CryptoConfig 類型一起使用。

它允許使用它們的應用程序使用機器配置的算法實現(因此使用machine.config)。例如

RSA rsa = RSA.Create ();

預設情況下(machine.config 中沒有任何內容)將創建一個 RSACryptoServiceProvider。現在,如果您修改 machine.config,您的應用程序可能會返回給您一個 RSAManaged 實例(例如,通過將其配置為使用 Mono.Security.dll)。這對於允許應用程序選擇特定的實現(例如 FIPS-140 認證)或 HSM(硬體安全模組)非常有用 - 即無需重新編譯您的應用程序來支持它們!

回到原來的Create(string),這個方法讓你選擇使用哪個實現。它只是呼叫 CryptoConfig.CreateFromName(string) 並將結果轉換回,在這種情況下,是一個RSA實例。

如果您想確保使用特定的實現,例如 RSAManaged,這很有用——即使您的應用程序沒有連結到特定的程序集(例如 Mono.Security.dll)。

引用自:https://stackoverflow.com/questions/7234861