强名称密钥密码存储在哪里?

时间:2010-11-14 11:56:38

标签: .net visual-studio

我通常不会为签署我的.NET程序集而烦恼,所以除了它的基本机制之外我不太了解。对于我正在进行的小项目,有必要签名,我创建了一个新密钥,用密码保护。

我希望在重新编译程序集的某个时间点会提示输入此密码,但在创建密钥文件后,我从未需要在任何地方输入密码。这似乎首先打破了密码保护密钥的目的。

我想密码是在某个地方缓存的,但在哪里?它是在某种私人存储?如果我给其他人我的整个解决方案目录中包含密钥文件,他们会被提示输入我输入的密码,还是他们能够在没有密码的情况下签署程序集?

互联网上有很多关于强名称密钥和使用它们的文章,但由于一些奇怪的原因,它们都掩盖了Visual Studio实际使用密码的方式。

更新 重新启动Visual Studio(和Windows)无效,因此缓存似乎是持久的。删除.suo文件不会改变签名程序集不需要密码的事实。

1 个答案:

答案 0 :(得分:11)

请参阅Create Strong Name Key Dialog Box的文档。

  

密码信息存储在计算机的加密存储数据库中。

来自CLR Inside Out: Using Strong Name Signatures的其他信息。

  

您可以使用限制性访问控制列表(ACL)在密钥容器中安装私钥,以防止未经授权访问密钥容器。或者,您可以将私钥存储在智能卡或其他单独的硬件设备上。 sn.exe工具允许您使用其他加密服务提供程序(CSP)进行签名。请查看sn.exe文档中的-c选项。