.NET程序集签名

强命名程序集的一个好处是防篡改。假如我有一个程序集MyDll.dll,如果我用我自己的私钥进行签名将程序集中的内容进行哈希处理,其他人如果不知道我的私钥的话,就不能篡改我的这个程序集进行某些恶意的行为。
但对于一些大型程序的开发,私钥一般是不公开的,当然,与它匹配的公钥是公开的,可以自由分发。那么如何确保开发人员在开发的过程中使用强命名程序集(如希望将其放到GAC中,因此必然得是强命名程序集)。延迟签名就是为此目的。
仍以MyDll.dl为例:
1)生成公钥/私钥对
    sn -k Company.snk
2)提取出公钥,而将私钥另外进行妥善保管
    sn -p Company.snk public.snk
3)对程序集进行延迟签名
    csc /keyfile:public.snk /delaysign /t:library MyDll.cs
4)让CLR信任程序集的内容,不执行哈希处理
    sn -Vr MyDll.dll
    由于上面的命名会在注册表中添加相应项,因此对同一程序集只需执行一次。
    这样,MyDll.dll就可以安装到GAC中(如果你愿意的话)
5)其他开发人员可以引用此程序集,就好像一般的强命名程序集一样
6)假如开发完成要进行最终部署的话,一定要用私钥进行签名。
     否则,有人完全可以用这个公钥来做一个相同的程序集来替换掉你的这个程序集来做些坏事。
     总之,程序集的安全会大打折扣。为此,让保管私钥的人来完成如下签名
     sn -R MyDll.dll Company.snk
     注:我们不能单独提取出私钥,私钥和公钥是在一个文件中。公钥可以单独提取出来,以便于分发。
7)打开验证,在4)中的注册表项会被相应移除
    sn -Vu MyDll.dll

 

其他介绍:

http://www.cnblogs.com/cpcpc/archive/2011/01/17/2123086.html

http://www.cnblogs.com/Dot-Boy/archive/2010/04/16/1713719.html

http://www.2cto.com/kf/201007/52822.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值