代码之家  ›  专栏  ›  技术社区  ›  Thorarin

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

  •  16
  • Thorarin  · 技术社区  · 14 年前

    我通常不需要为我的.NET程序集签名,所以除了它的基本机制之外,我不知道什么。对于我正在处理的一个小项目,需要签名,我创建了一个新的密钥,用密码保护。

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

    我想密码是缓存在某个地方的,但是在哪里呢?它是在某种私人仓库里吗?如果我将我的整个解决方案目录和其中的密钥文件交给其他人,他们是否会被提示输入我输入的密码,或者他们是否能够在没有密码的情况下对程序集进行签名?

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

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

    1 回复  |  直到 11 年前
        1
  •  11
  •   sisve    11 年前

    有关 Create Strong Name Key Dialog Box

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

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

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