c# - 如何从代码中设置 RSAProtectedConfigurationProvider 的 key 大小

标签 c# security web-config rsa

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

代码非常简单 - 与 example on MSDN 非常相似.

有什么方法可以设置提供商应该使用的 key 大小吗?据我所知,RSA 的默认值为 1024。我需要将其设置为 2048 或更大。

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

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

最佳答案

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

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

如果未提供,

RsaProtectedConfigurationProvider 使用默认容器名称 NetFrameworkConfigurationKey。因此,如果您预先创建 key 并将其添加到该容器中,那么提供商应该在您使用它时获取它。

// 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();

关于c# - 如何从代码中设置 RSAProtectedConfigurationProvider 的 key 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948202/

相关文章:

web-services - Paypal 如何从那里保护客户数据 业务合作伙伴?

java - 如何将键转换为字符串,反之亦然

.net - 配置 web.config dotnet IIS

c# - 无法打开作为链接添加的 configSource 文件

c# - if((attributes and File Attributes.Hidden) == File Attributes.Hidden) { } 如何工作?

c# - 为什么这里允许使用未分配的局部变量?

c# - 在 GridView asp Grid 中排序

c# - (C#) 如何通过拖动和 "Open with ..."在我的程序中打开文件

java - 什么 Web 应用程序防火墙可以用于 Apache Tomcat?

iis-7 - 我可以以编程方式定义我的 IIS7 站点绑定(bind)(例如 foo.domain.com)吗?