我通常不会费心签署我的 .NET 程序集,所以除了它的基本机制之外我不知道太多。对于我正在开发的一个小项目,有必要进行签名,我创建了一个新密钥,并用密码进行保护。
我预计在重新编译程序集时会在某个时间点提示输入此密码,但在创建密钥文件后我从来不需要在任何地方输入它。这似乎从一开始就违背了密码保护密钥的目的。
我想象密码被缓存在某个地方,但是在哪里呢?它在某种私人存储中吗?如果我将包含密钥文件的整个解决方案目录提供给其他人,是否会提示他们输入我输入的密码,或者他们是否能够在没有密码的情况下对程序集进行签名?
互联网上有很多关于强名称密钥及其使用的文章,但由于某些奇怪的原因,它们都掩盖了 Visual Studio 实际使用密码的方式。
Update:重新启动 Visual Studio(和 Windows)没有任何效果,因此缓存似乎是持久的。删除 .suo 文件不会改变不需要密码即可对程序集进行签名的事实。
请参阅文档创建强名称密钥对话框 http://msdn.microsoft.com/en-us/library/tbachc24%28v=VS.100%29.aspx.
密码信息存储在您计算机的加密存储数据库中。
其他信息来自CLR 全面深入:使用强名称签名 http://msdn.microsoft.com/en-us/magazine/cc163583.aspx#S8.
您可以使用限制性访问控制列表 (ACL) 将私钥安装在密钥容器中,以防止对密钥容器进行未经授权的访问。或者,您可以将私钥存储在智能卡或其他单独的硬件设备上。 sn.exe 工具允许您使用不同的加密服务提供商 (CSP) 进行签名。查看 sn.exe 文档中的 –c 选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)