共享组件必须具有强名称,此是需要密钥,该密钥有私钥和公钥,共享组件只用到了公钥部分,那私钥有什么用?私钥和公钥到底是什么关系?能否详细回答一下

解决方案 »

  1.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconworkingwithstrongly-namedassemblies.htm
      

  2.   

    http://tommyprogram.blogdriver.com/tommyprogram/83522.html
      

  3.   

    TO xxuu503(2005年CSDN MVH(Most Valuable Hemorrhoiders)
    你也可以说说啊!
      

  4.   

    .net 里的强名称签名 我理解只是保证 程序集的安全发放  
    签名过的程序集只能在又此key的机子上运行 否则是不能的
      

  5.   

    强名称起码有下面两种用处
    1、用来区别程序集的版本,这个问题除了使用散列技术,还可以使用GUID,URL,命名空间等;而.NET选择了一个特别的技术,就是非对称加密,并且公钥的生成还和程序集清单相关,这样来保证唯一
    2、而私钥可以利用CAS(代码访问安全)来做版权保护,可以指定调用者的私钥(比如自己公司的所有程序集都用同一个私钥)这两个用途基本上没有什么关联
    但是这样一次非对称加密可以解决两个问题,用于程序集的标识可以清楚很多
      

  6.   

    需要注意的是,使用强名称做版权保护,作用有限
    通过反编译器,或者ILDASM工具,可以得到源码,只要去掉强名称相关的代码,再次编译,程序集就一样可以被别人使用
    .NET里面版权保护似乎只有使用混淆器,或者使用C/C++这样的native language编写关键代码
      

  7.   

    修正一下:
    2、而私钥可以利用CAS(代码访问安全)来做版权保护,可以验证调用者的[公钥](比如自己公司的所有程序集都用同一个私钥)是否合法
    以StrongNameIdentityPermissionAttribute的形式放在代码中
    如果是同一个私钥配合同一个程序集算出的公钥,则验证通过私钥是不能出现在代码里面的这个地方有点点复杂,嗯