构建RSA加密服务提供程序是否会持久存在或泄漏关键数据?

时间:2013-01-28 08:39:54

标签: c# cryptography rsa

我在这里读到另一篇文章,这样的代码会导致.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。

1 个答案:

答案 0 :(得分:2)

我认为混淆是在规范的这一部分:

  

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

在我看来,您必须提供CspParameters或将PersistKeyInCsp设置为true才能保留密钥。至少,这就是我读它的方式,你的实验似乎也很匹配。

它可能就像PKCS#11令牌;键是默认的会话对象。