我似乎无法理解这个.NET程序集签名的事情

Ric*_*ral 9 .net strongname assemblies signing

好吧,我必须愚蠢,因为我已经读过这个:http: //www.csharp411.com/net-assembly-faq-part-3-strong-names-and-signing/

而我仍然没有得到它......

假设我打开项目的属性并转到"签名"选项卡,然后选中"签署程序集"并生成一个带密码的新程序集.创建了带有.pfx扩展名的强名称密钥文件,包括公钥和私钥,VS将在编译时对我的程序集进行数字签名,对吧?

私钥怎么样?不应该是私人和我,开发人员,是唯一拥有它的人吗?组件不应仅使用公钥签名吗?

任何人都可以向我解释这个吗?基本上,我想签署我的项目的程序集,并允许我用户检查程序集是否真的由我开发,我是唯一保留私钥(我认为我应该).

Hen*_*man 8

你基本上是对的.

您创建一个密钥对并将其用于签名.但是不要发送pfx(或snk)文件,它包含公钥和私钥,应该保持安全.

作为签名过程的一部分,公钥将添加到程序集中.

将程序集加载到应用程序时,将检查此签名.最终用户还可以检查GAC中的公钥令牌,但这不是一个非常方便的过程.你必须以某种方式告诉他们你的公钥令牌.

而且整个事情只能保持密钥文件的私密性.

另请注意,理想情况下,每家公司只能拥有1个密钥.如果您担心与(许多)同事共享,请调查延迟签名.