Security 增强型强名称(SNK)和个人交换格式(PFX)之间有什么区别?应该在什么时候使用它们?
这个问题是下列问题的延伸:Security 增强型强名称(SNK)和个人交换格式(PFX)之间有什么区别?应该在什么时候使用它们?,security,certificate,.net-assembly,code-signing,strongname,Security,Certificate,.net Assembly,Code Signing,Strongname,这个问题是下列问题的延伸: 我正在研究自定义程序集的强命名和代码签名,并阅读了各种SO帖子(见上文)和MSDN。我理解如下: 在没有密码的情况下对程序集进行强命名会创建一个SNK文件,并且只标识程序集的发布者,以便将其部署到GAC,并减轻由来自不同发布者的同名程序集引起的所谓调用DLL Hell 使用密码对程序集进行强命名会向程序集添加代码签名,并创建一个PFX文件,而不是SNK文件。这既可以识别发布者,又可以验证代码是否未被篡改。注意:此文件可以由受信任的证书颁发机构(如Veris
DLL Hell
我理解2是1的逻辑扩展。我的上述理解正确吗?但是,上面的2和3有什么区别?3是否比1有任何优势,或者它只是一种只允许跨算法迁移的方式?换言之,我认为2和3的存在有着不同的原因;这是什么原因/实现?添加到1:您需要强命名以确保未引用未签名的程序集。您可能不想使用GAC 更正为2:代码签名!=强命名。对于强命名,请使用
sn.exe
创建密钥。对于代码签名,需要具有私钥的x.509数字证书。证书本身没有密码。PFX/PKCS#12容器格式使用密码来保护私钥。其他选择。例如,可以使用智能卡或代币
所以2不是1的扩展。3的优点是使用了更好的散列算法和两个而不是一个签名。感谢您的澄清。我在这里提出了一个后续问题: