我在这里读到另一篇文章,这样的代码会导致.NET将密钥保存到创建它的机器上的随机密钥库(可能是在注册表中)。这是真的,在什么条件下会持续而不是坚持?如果从字符串初始化密钥,是否仍会发生持久性?
RSACryptoServiceProvider alg = new RSACryptoServiceProvider();
看来是真的吗?
----现在我不确定..当我在我的机器上调试时,PersistInCspContainer设置为false。
答案 0 :(得分:2)
我认为混淆是在规范的这一部分:
当你
PersistKeyInCsp
属性自动设置为true 在CspParameters
对象中指定密钥容器名称并将其用于 初始化RSACryptoServiceProvider对象。你可以指定一个 使用KeyContainerName
字段的容器名称。如果你设置了PersistKeyInCsp
属性为true而不初始化 带有RSACryptoServiceProvider
对象的CspParameters
对象,随机 创建了以"CLR"
为前缀的密钥容器名称。
在我看来,您必须提供CspParameters
或将PersistKeyInCsp
设置为true才能保留密钥。至少,这就是我读它的方式,你的实验似乎也很匹配。
它可能就像PKCS#11令牌;键是默认的会话对象。