2015-05-22 51 views
0

几个.dll可以有相同的公钥(强名称)吗? 我在我的电脑上发现了61个版本的mscorlib.dll。 当我运行这个工具时,我发现他们中的一些人拥有相同的公钥!? 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校验和是多少?几个程序集可以拥有相同的公钥吗?

+0

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

回答

1

是的,他们可以。但公钥并不是强名,它只是用于签署程序集(或程序集)的加密密钥的公共部分。一旦你这样做,该大会有一个强大的名字。

+1

它不仅仅是公钥加密的一部分,组件名称语句中显示的公钥只是用于签署程序集的实际公钥的一部分(如果您使用['InternalsVisibleTo'](https:/ /msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute%28v=vs.110%29.aspx)你必须使用完整的公钥,而不是减少版本) –

+0

对,一直有在'PublicKeyToken'(这个问题的简称)和'PulicKey'(完整版本)之间有点混淆。 – MatteoSp

相关问题