关于.NET程序集的公钥令牌的澄清

时间:2009-05-21 11:28:07

标签: .net

来自维基百科的引用:“一个公钥令牌。这是公钥的64位哈希,对应于用于签署1程序集的私钥。一个签名的程序集据说有一个强大的名称。” [来源: http://en.wikipedia.org/wiki/.NET_assemblies]

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

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

编辑: 我的问题是它是公用密钥是哈希还是使用密钥加密的哈希值?

2 个答案:

答案 0 :(得分:3)

MSDN始终是您最好的(并且几乎总是非常准确)这类事情的来源。来自Creating and Using Strong-Named Assemblies上的页面:

  

强名称由   程序集的标识 - 简单的文本   名称,版本号和文化   信息(如果提供) - 加上a   公钥和数字签名。它   从程序集文件生成   使用相应的私钥。   (程序集文件包含   程序集清单,其中包含   所有文件的名称和哈希值   弥补集会。)

所以维基百科似乎含糊不清,但没有在那里讲述完整的故事。

该MSDN页面还链接到一些有关.NET程序集强名称签名的文章。

答案 1 :(得分:0)

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

但是,它们的签名(由签名过程添加到汇编的数据)将不同,因为它基于程序集内容和密钥。