6

我的应用程序有可能保护选择的配置文件。这是使用SectionInformation.ProtectSection指定部分的方法来完成的Configuration。我正在使用标准提供者RsaProtectedConfigurationProvider

代码非常简单 - 与MSDN 上的示例非常相似。

有没有办法设置提供者应该使用的密钥大小?据我所知,RSA 的默认值为 1024。我需要将其设置为 2048 或更大。

当我们使用asp_regiis.exe时,可以使用命令行选项-size来完成类似的操作。但我需要从代码中做到这一点。也许有任何方法可以配置或预先创建密钥并将其以某种方式注入到默认密钥存储中,因此下次使用 of将赶上它......RsaProtectedConfigurationProviderSectionInformation.ProtectSection

感谢您提供任何建议或示例。

4

1 回答 1

1

RSAProtectedConfigurationProvider提供了两种不同的方法。一个调用AddKey可用于在容器内创建密钥。如果您将密钥标记为可导出,您可以ExportKey稍后使用方法来获取该密钥并将其存储在其他地方。

如果您已有密钥,则可以使用该ImportKey方法。它将接受一个 XML blob,很像来自ExportKey.

RsaProtectedConfigurationProvider如果未提供,则使用默认容器名称NetFrameworkConfigurationKey 。因此,如果您预先创建了密钥并将其添加到该容器中,那么提供者应该在您使用它时将其提取出来。

// Same properties as .NET uses to load the key
CspParameters csp = new CspParameters();
csp.KeyContainerName = "NetFrameworkConfigurationKey"; 
csp.KeyNumber = 1;
csp.ProviderType = 1;

// Create the new key, and save it in the key store
rsa = new RSACryptoServiceProvider(2048, csp);
rsa.PersistKeyInCsp = true;
rsa.Clear();
于 2013-10-18T20:15:27.967 回答