【发布时间】:2012-09-06 13:44:08
【问题描述】:
如果RSACryptoServiceProvider不能加密大于KeySize的数据,那么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 中的导出导入密钥选项之外,还有更多的事情发生在幕后。
我的理解:
我们用 RsaProtectedConfigurationProvider 加密 myapp.exe.config,提供密钥容器名称 myrsakeycontainer,并导出公有和私有xml 文件的密钥 myrsakeyfile.xml.
如果我们希望 myapp.exe.config 在另一台计算机上被解密,我们使用名为 的容器从 myrsakeyfile.xml 导入它们的密钥对myrsakeycontainer.
这很好用。我可以通过RSACryptoServiceProvider 在我的项目中实现相同的目标。但我无法处理大于密钥大小的数据
new RSACryptoServiceProvider(cspParameters)
为我生成。
- 我希望能够以这种方式解密大量数据(以防万一) RsaProtectedConfigurationProvider 会。
- 是的,我可以使用RijndaelManaged(我最喜欢的)作为实际 加密和对称密钥传输(导出/导入)我 可以使用RSACryptoServiceProvider。这让我陷入 如果我想导出/导入对称密钥,我应该 首先使用公钥或 RSA 对其进行加密,然后将其导入另一个 机,用 RSA 的私钥解密。哪个是导出 RSA 密钥对以及加密的对称密钥。
但是,当我导出 RSA 密钥对时 RsaProtectedConfigurationProvider 通过 aspnet_regiis.exe,我 相信它只导出 xml 中的公钥/私钥对 文件,没有其他信息(如对称密钥信息)。
那么,只有 RSA 密钥对,如何 RsaProtectedConfigurationProvider 设法解密(巨大-结束 在我的情况下是 400K 个字符)在另一个上加密的信息 电脑? 如果它使用对称算法(也许?!) 加密信息,该对称密钥如何导出/导入到另一个 电脑解密? RSA 密钥容器的对称密钥部分是通过 aspnet_regiis.exe 导出的,还是对称密钥是根据算法动态设计的?
-
我可以使用 Rijndael,它的密钥是用 RSA 加密的 密钥对,我可以导出/导入 RSA 密钥对和 Rijndael 对称密钥到另一台计算机。 (我过去做过)
我很想知道里面用的是什么 RsaProtectedConfigurationProvider。
有什么理论吗?概念?链接?建议?请..
类似问题 - What algorithms are used by RSAProtectedConfigurationProvider in web.config encyrption?
【问题讨论】:
标签: c# windows encryption-asymmetric encryption-symmetric