Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NETRSA.Create(字符串algName):algName中有什么内容?_.net_Cryptography_Rsa - Fatal编程技术网

.NETRSA.Create(字符串algName):algName中有什么内容?

.NETRSA.Create(字符串algName):algName中有什么内容?,.net,cryptography,rsa,.net,Cryptography,Rsa,根据RSA类的MSDN文档,有两种。一个默认实现和一个接受字符串参数“algName”的实现。我在网上的任何地方都找不到任何使用RSA.Create(String)版本的示例 所以我的问题是:参数“algName”通常包含什么?可以使用哪些算法?或者在哪里可以找到关于有效算法名称的信息?你可以放任何你喜欢的东西,但我认为你需要自己实现它。在.NET框架中,只有一种现成的RSA算法实现,即rsacyptoserviceprovider Create(String)方法继承自agorithm,您可以

根据RSA类的MSDN文档,有两种。一个默认实现和一个接受字符串参数“algName”的实现。我在网上的任何地方都找不到任何使用RSA.Create(String)版本的示例


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

你可以放任何你喜欢的东西,但我认为你需要自己实现它。在.NET框架中,只有一种现成的
RSA
算法实现,即
rsacyptoserviceprovider


Create(String)
方法继承自
agorithm
,您可以向该方法传递许多值,有关完整的列表,请参见…

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

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

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

回到原始的创建(字符串),此方法允许您选择要使用的实现。它只需调用CryptoConfig.CreateFromName(string)并将结果转换回RSA实例


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

Erik a.Brandstadmoen的答案到目前为止都是正确的,但对于.NET 4.6,现在有了第二个RSA类:

RSACng

默认情况下,RSA.Create()仍然返回RSACryptServiceProvider,但如上所述,您可以在machine.config中更改此行为

如果您对更详细的比较和如何在machine.config中覆盖它的示例感兴趣,您可以查看以下博文:


谢谢。这很有帮助。
RSA rsa = RSA.Create ();