你的位置是:网站首页--- 个人网站发展---个网学院

非对称加密与程序集数字签名


【 字体:


写在前面:.NET的程序集签名是使用非对称加密技术的,简单地说就是私钥与公钥的技术,非对称加密技术最广泛的应用也就是数字签名,现在被应用于.NET程序集的编译当中了。

.NET程序集的签名
圣经《.NET框架程序设计》中有这么一句话“用私有密钥为程序集签名可以确保该程序集的生产者为对应公有密钥的持有者”,这一句话是很难理解的,笔者没有看到原文是怎样写的,在此先发表一下自己的浅见。
用私有密钥为程序集签名一般是被理解为使用私有密钥为程序集的几个重要信息加密,加密之后,使用程序集的用户可以用公有密钥进行解密从而知道编译者就是原用户,如果获取的的程序集在公有密钥解密中失败,就知道程序集已经被修改。因为上面的话是多少的难以理解。

非对称加密算法
这种算法包括两个密钥:公开密钥与私有密钥。这是一对的。使用公开密钥加密,只有私有密钥可以解密,这里相当用一个秘密通讯的过程。而使用私有密钥加密,使用公开密钥解密,就是一个数字签名的过程。算法保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢。

怎样查看强命名程序集
System.Drawing,Version=1.0.3300.0, Culture=neutral, PublicKey=b03f5f7f11d50a3a
这是一个例子,查看C:\WINDOWS\assembly目录可以更清楚了解这一技术的表现。
 
使用C:\Windows\Assembly\GAC下的程序GACUtil.exe可以安装强命名的程序集。
网上流传的生成密钥的方法如下,测试过是可以成功的。
    1.打开Visual Studio 2008 Command Prompt工具
    2.输入 SN -k Myname.snk 创建密钥文件
    3.输入 SN -p Myname.snk Myname.PublicKey 创建一个只包含密钥的文件
    4.输入 SN -tp Myname.PublicKey 查看密钥


出处:Chakman

Copyright © 2006-2008 小作坊网 All rights reserved.
备案号:粤ICP备09058104号          电子信箱: jingle_guan#163.com