c# – 构建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.

最佳答案 我认为混淆是在规范的这一部分:

The PersistKeyInCsp property is automatically set to true when you
specify a key container name in a CspParameters object and use it to
initialize an RSACryptoServiceProvider object. You can specify a
container name using the KeyContainerName field. If you set the
PersistKeyInCsp property to true without initializing the
RSACryptoServiceProvider object with a CspParameters object, a random
key container name prepended with "CLR" is created.

在我看来,你必须提供CspParameters或将PersistKeyInCsp设置为true来持久化密钥.至少,这就是我读它的方式,你的实验似乎很匹配.

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

点赞