RsaProtectedConfigurationProvider实现VS的RSACryptoSer

2019-09-22 04:37发布

如果的RSACryptoServiceProvider不能加密大于它的数据密钥大小 ,如何RsaProtectedConfigurationProvider是在.NET框架中实现?

我的工作是要被用来加密/解密的一些敏感信息的工具。 我的两个加密提供选项DPAPI和RSA,而DPAPI不​​适合网络农场的环境,RSA是因为有KeyContainer导出/导入选项配合。 这是一个工作站上运行一个独立的应用程序。

正如我知道非对称加密算法不是专为大型数据,我只是想用下面的代码超过400K加密长度的字符串,它工作得很好。

        if (!section.SectionInformation.IsProtected)
        {
            section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
            section.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);
        }

当然,这意味着有更多的事情除了在ASPNET_REGIIS.EXE导入导出密钥选项发生在幕后。

我的理解:

  1. 我们加密myapp.exe.configRsaProtectedConfigurationProvider,提供密钥容器名称myrsakeycontainer,以及公共和私有密钥导出到一个XML文件myrsakeyfile.xml。

  2. 如果我们想myapp.exe.config在另一台计算机被解密,我们进口他们从myrsakeyfile.xml密钥对与容器命名myrsakeycontainer。

这个效果很好。 我可以实现通过我的项目同样的事情的RSACryptoServiceProvider 。 但我无法处理比关键尺寸数据new RSACryptoServiceProvider(cspParameters)对我产生。

  • 我希望能够解密庞大的数据(以防万一)现在的样子RsaProtectedConfigurationProvider一样。
  • 是的,我可以使用RijndaelManaged的 (我的最爱)实际加密和对称密钥传输(出口/进口),我可以使用的RSACryptoServiceProvider 。 这使我在一种情况,如果我要导出/导入的对称密钥,我应该先用公共密钥或RSA加密,将其导入到另一台机器,与RSA的私钥解密。 这是导出RSA密钥对用加密的对称密钥一起。
  • 但是,当我出口使用的RSA密钥对RsaProtectedConfigurationProvider通过ASPNET_REGIIS.EXE,我相信这仅导出公钥/私钥对XML文件,并没有其他的信息(如对称密钥信息)。

  • 所以,只用RSA密钥对,如何RsaProtectedConfigurationProvider设法derypt(巨大的-超过40万个字符在我的情况)的信息在另一台电脑上加密? 在情况下,它采用了对称算法(也许?)来加密信息,如何是,对称密钥导出/导入到另一台计算机解密? 是,RSA密钥容器的对称密钥部分经由ASPNET_REGIIS.EXE出口或在对称密钥基于算法做作动态?

  • 我可以用一个Rijndael算法,其关键是encrypeted与RSA密钥对,我可以导出/导入两个RSA密钥对和Rijndael算法对称密钥到另一台计算机脱身。 (这是我在过去所做的那样)

    我想知道什么是内部使用RsaProtectedConfigurationProvider 。

任何理论? 概念? 链接? 建议? 请..

类似的问题- 在web.config中encyrption使用何种算法通过RSAProtectedConfigurationProvider?

Answer 1:

加密的对称密钥存储在XML 旁边的加密配置信息,所述对称密钥已经被加密。

如果您使用反射来看看代码,它的作用是加载XML节点,并使用非对称 RSA私钥来解密存储XML节点本身的对称密钥。

实际执行这种神奇的功能是在这里:

公共虚拟SymmetricAlgorithm GetDecryptionKey(的EncryptedData的EncryptedData,串symmetricAlgorithmUri);

声明类型:System.Security.Cryptography.Xml.EncryptedXml大会:System.Security,版本= 2.0.0.0

看到周围的代码

this.m_document.SelectNodes("//enc:EncryptedKey", nsmgr);

此博客帖子有你如何配对非对称和对称算法在现实世界的实践中一篇精辟论述: http://pages.infinit.net/ctech/20031101-0151.html



文章来源: RsaProtectedConfigurationProvider implementation vs RSACryptoServiceProvider c#