.net为程序集签名

2.给程序集签名

1)打开开始菜单,搜索“开发人员命令提示符”:

2)按照如下的顺序生成一个test.snk的秘钥:

在黄色标记的路径下可以找到生成的两个文件:

3)随便用vs创建一个项目,在项目上选择右键,属性:

勾选为程序集签名,并选择我们刚才生成的test.snk:

生成项目,就实现了为程序集添加签名。

那么这个签名有什么用呢,如果你把项目文件夹下拷贝过去的test.snk删除掉,你会发现程序集编译会报错:

如果你的项目里面引用了另外一个程序集,这个程序集未签名,那么程序运行时则会报错(注意这里单纯引用dll并不会触发这个异常,要用到该dll里面的东西才会触发):

给ClassLibrary1使用另外一个签名,比如test1.snk,生成项目,可以发现,即便两个程序集用的签名不一致,但是运行起来并没有问题。把项目生成的包拷贝出来,然后替换掉ClassLibrary1的签名为test.snk,重新生成一个dll,替换刚才拷贝的包里面的dll,点击运行,程序报错:

由此可见,这个签名的作用是给程序集添加唯一标识,在一定程度上可以防止生成的项目里面的dll被他人恶意替换。替换的人如果想成功替换,就必须使用相同的私钥对程序集进行签名。

总结如下:

a)被签名的程序引用的程序集必须都要签名,即便你是通过nuget包引用的,仍然需要强签名。用这个方法去检测,你会发现nuget里面有大量的星级很高的开源项目,都因为没有强签名而无法在被签名的项目中使用。这是开发者经验不足导致的疏忽。

b)要想直接替换被引用的程序集,则所使用的新程序集的签名必须和被替换的一致。

 

关于生成秘钥的方法,除了上面说的方法,还有另外一个方法

1)选择项目,右键,属性

2)勾选为程序集签名

3)选择新建:

4)填写秘钥相关信息:

5)信息填写完成后,点击确定,自动生成一个.pfx格式的新秘钥文件文件:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值