我在这里读到另一篇文章,这样的代码会导致.NET将密钥保存到创建它的机器上的随机密钥库(可能是在注册表中).这是真的,在什么条件下会持续而不是坚持?如果从字符串初始化密钥,是否仍会发生持久性?
RSACryptoServiceProvider alg = new RSACryptoServiceProvider();
这似乎是真的吗?
—-现在我不确定..当我在我的机器上调试时,PersistInCspContainer设置为false.
最佳答案 我认为混淆是在规范的这一部分:
The
PersistKeyInCsp
property is automatically set to true when you
specify a key container name in aCspParameters
object and use it to
initialize an RSACryptoServiceProvider object. You can specify a
container name using theKeyContainerName
field. If you set the
PersistKeyInCsp
property to true without initializing the
RSACryptoServiceProvider
object with aCspParameters
object, a random
key container name prepended with"CLR"
is created.
在我看来,你必须提供CspParameters或将PersistKeyInCsp设置为true来持久化密钥.至少,这就是我读它的方式,你的实验似乎很匹配.
它可能就像PKCS#11令牌;键是默认的会话对象.