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

Tho*_*rin 17 .net visual-studio

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

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

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

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

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

sis*_*sve 12

请参阅" 创建强名称密钥"对话框的文档.

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

来自CLR Inside Out:使用强名称签名的其他信息.

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

  • 查看%AppData%\ Microsoft\Crypto,其中默认CSP(加密存储提供程序)存储用户特定的内容,或%AllUsersProfile%\ Microsoft\Crypto用于计算机范围的密钥. (2认同)