【问题标题】:Clarification regarding public key token of .NET Assembly关于 .NET 程序集的公钥令牌的说明
【发布时间】:2009-05-21 11:28:06
【问题描述】:

来自 Wikipedia 的引述:“公钥令牌。这是公钥的 64 位散列,对应于用于签署1 程序集的私钥。签名的程序集据说具有强名称。 " [来源: http://en.wikipedia.org/wiki/.NET_assemblies]

这是正确的吗?我觉得这与下面的解释不一致: “对程序集进行签名涉及获取程序集重要部分的哈希,然后使用私钥对哈希进行加密。签名的哈希与公钥一起存储在程序集中。”

第一个引用是否正确。能否请您简单地解释一下签名的过程。

编辑: 我的问题是散列的是公钥还是使用密钥加密的散列?

【问题讨论】:

    标签: .net


    【解决方案1】:

    MSDN 始终是此类事情的最佳(并且几乎总是完全准确)的来源。来自Creating and Using Strong-Named Assemblies上的页面:

    强名称由 程序集的身份——它的简单文本 名称、版本号和文化 信息(如果提供)——加上一个 公钥和数字签名。它 从程序集文件生成 使用对应的私钥。 (汇编文件包含 程序集清单,其中包含 所有文件的名称和哈希值 组成大会。)

    所以维基百科似乎有点正确,但并没有讲述完整的故事。

    该 MSDN 页面还链接到一些更深入地了解 .NET 程序集的强名称签名的文章。

    【讨论】:

      【解决方案2】:

      公钥令牌基于用于对程序集进行签名的密钥,因此如果您获取两个程序集并使用相同的密钥对它们进行签名,则它们的公钥令牌将相同。

      但是,它们的签名(通过签名过程添加到程序集的数据)将不一样,因为这是基于程序集内容和密钥的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 2014-07-16
        相关资源
        最近更新 更多