构造 RSA 加密服务提供程序是保留还是泄漏密钥数据

本文关键字:保留 密钥 数据 泄漏 程序 加密 RSA 服务 构造 | 更新日期: 2023-09-27 17:56:22

我在这里的另一篇文章中读到,这样的代码将导致 .NET 将密钥从创建它的机器中保存到随机密钥存储(可能在注册表中)中。这是真的吗,在什么条件下它会持续存在与不持续?如果从字符串初始化密钥,持久性仍然会发生吗?

RSACryptoServiceProvider alg = new RSACryptoServiceProvider();

好像是真的?

http://blogs.msdn.com/b/winsdk/archive/2010/01/29/while-creating-cryptographic-keys-or-key-containers-repeatedly-your-hard-disk-may-get-filled-with-lots-of-files-and-may-end-up-filling-the-whole-hard-disk-space-if-not-deleted.aspx

---- 现在我不确定..当我在我的机器上调试时,PersistInCspContainer设置为false。

构造 RSA 加密服务提供程序是保留还是泄漏密钥数据

我认为混乱在于规范的这一部分:

PersistKeyInCsp属性将自动设置为 true 时 在 CspParameters 对象中指定密钥容器名称,并使用它来 初始化 RSACryptoServiceProvider 对象。您可以指定一个 使用KeyContainerName字段的容器名称。如果将 PersistKeyInCsp属性为 true,而不初始化 RSACryptoServiceProvider对象与CspParameters对象,随机 将创建前缀为 "CLR" 的密钥容器名称。

在我看来,您必须提供CspParameters或将PersistKeyInCsp设置为 true 才能持久保存密钥。至少,我是这样读的,你的实验似乎很匹配。

它可能类似于 PKCS#11 令牌;默认情况下,密钥是会话对象。