如何从代码中设置RSAProtectedConfigurationProvider的密钥大小
本文关键字:密钥 RSAProtectedConfigurationProvider 设置 代码 | 更新日期: 2023-09-27 18:00:14
我的应用程序有可能保护所选的配置文件。这是对加载的Configuration
的指定部分使用SectionInformation.ProtectSection
方法来完成的。我使用的是标准提供程序RsaProtectedConfigurationProvider
。
代码非常简单,与MSDN上的示例非常相似。
有没有办法设置提供者应该使用的密钥大小?正如我所知,RSA的默认值是1024。我需要将其设置为2048或更大。
当我们使用asp_regiis.exe时,可以使用命令行选项-size来完成类似的操作。但我需要从代码中完成。也许有任何方法可以配置RsaProtectedConfigurationProvider
或预创建密钥,并以某种方式将其注入默认密钥存储,这样下次使用SectionInformation.ProtectSection
就会赶上它…
谢谢你的任何建议或例子。
RSAProtectedConfigurationProvider
提供了两种不同的方法。一个名为AddKey
的密钥可以用于在容器内创建密钥。如果将密钥标记为可导出,则可以稍后使用ExportKey
方法获取该密钥并将其存储在其他位置。
如果您已经有一个现有的密钥,则可以使用ImportKey
方法。它将接受一个与ExportKey
中的XML blob非常相似的XML blob。
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();