zoukankan      html  css  js  c++  java
  • .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
  • 相关阅读:
    ASP.NET中使用javascript
    遍历DataList控件
    史上最强劲之android模拟器命令详解
    Android开发环境配置简介
    Android模拟器adb命令介绍
    听一名普通android应用开发人员谈:怎样成为一名Android开发者
    android模拟器安装及优化(集锦)
    Ubuntu 快捷键集锦
    smplayer 中文字幕乱码,进度条及拖放MKV
    如何在Windows下搭建Android开发环境
  • 原文地址:https://www.cnblogs.com/anjou/p/1717817.html
Copyright © 2011-2022 走看看