来自维基百科的引用:“一个公钥令牌。这是公钥的64位哈希,对应于用于签署1程序集的私钥。一个签名的程序集据说有一个强大的名称。” [来源: http://en.wikipedia.org/wiki/.NET_assemblies]
这是对的吗?我觉得这与下面的解释不一致: “签署程序集涉及对程序集的重要部分进行散列,然后使用私钥加密散列。签名的散列与公钥一起存储在程序集中。”
第一个引用是否正确。能否请您用简单的术语解释签名过程。
编辑: 我的问题是它是公用密钥是哈希还是使用密钥加密的哈希值?
答案 0 :(得分:3)
MSDN始终是您最好的(并且几乎总是非常准确)这类事情的来源。来自Creating and Using Strong-Named Assemblies上的页面:
强名称由 程序集的标识 - 简单的文本 名称,版本号和文化 信息(如果提供) - 加上a 公钥和数字签名。它 从程序集文件生成 使用相应的私钥。 (程序集文件包含 程序集清单,其中包含 所有文件的名称和哈希值 弥补集会。)
所以维基百科似乎含糊不清,但没有在那里讲述完整的故事。
该MSDN页面还链接到一些有关.NET程序集强名称签名的文章。
答案 1 :(得分:0)
公钥标记基于用于对程序集进行签名的密钥,因此如果您使用两个程序集并使用相同的密钥对它们进行签名,则它们的公钥标记将是相同的。
但是,它们的签名(由签名过程添加到汇编的数据)将不同,因为它基于程序集内容和密钥。