.NET RSA.Create(String algName):algName是什么?

Lam*_*lex 4 .net cryptography rsa

根据RSA类的MSDN文档,有两种RSA.Create()方法.一个默认实现,一个采用字符串参数"algName".我无法在任何地方找到任何使用RSA.Create(String)版本的示例.

所以我的问题是:参数"algName"通常包含什么?可以使用哪些算法?或者我在哪里可以找到有效算法名称的信息?

Eri*_*oen 9

你可以放任何你喜欢的东西,但我认为你需要自己实施.RSA.NET框架中只有一种算法实现,即开箱即用,即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以获取完整列表...


pou*_*pou 5

.NET加密API的各种Create方法适用于machine.config文件和System.Security.Cryptography.CryptoConfig类型.

它允许使用它们的应用程序使用机器配置的算法实现(因此使用machine.config).例如

RSA rsa = RSA.Create ();
Run Code Online (Sandbox Code Playgroud)

默认情况下(在machine.config中没有任何内容)创建一个RSACryptoServiceProvider.现在,如果您修改machine.config,您的应用程序可能会返回给您一个RSAManaged实例(例如,通过将其配置为使用Mono.Security.dll).这对于允许应用程序选择特定实现(例如FIPS-140认证)或HSM(硬件安全模块)非常有用 - 即无需重新编译应用程序以支持它们!

回到原始的Create(字符串),此方法允许您选择要使用的实现.它只是调用CryptoConfig.CreateFromName(string)并将结果强制转换为RSA实例,在本例中.

如果您想确保使用特定的实现(例如RSAManaged),即使没有将应用程序链接到特定程序集(例如Mono.Security.dll),这也很有用.