【问题标题】:Can several assemblies have the same publickey?多个程序集可以具有相同的公钥吗?
【发布时间】:2015-05-23 01:17:32
【问题描述】:

多个 .dll 可以具有相同的公钥(强名称)吗? 我在我的电脑上找到了 61 个版本的 mscorlib.dll。 当我运行工具 sn -T 时,我发现其中一些具有相同的公钥!? C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v3.5\Profile\Client\mscorlib.dll 和 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll 似乎具有相同的公钥 (b77a5c561934e089)。这些密钥是如何生成的?是文件的 y CRC 校验和吗?

【问题讨论】:

  • “强名称”与公钥不同。您使用密钥对来创建签名,从而为程序集提供“强名称”。

标签: c# .net


【解决方案1】:

是的,他们可以。但是公钥不是强名称,它“只是”用于签署程序集(或程序集)的加密密钥的公共部分。执行此操作后,程序集就会有一个强名称。

【讨论】:

  • 不仅公钥只是加密的一部分,在程序集名称声明中显示的公钥只是用于签署程序集的实际公钥的一部分(如果您使用的是@987654321 @你必须使用完整的公钥,而不是缩略版)
  • 对,PublicKeyToken(问题所涉及的缩写版本)和PulicKey(完整版本)之间一直存在一些混淆。
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多