• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

.Net中的有个叫“强名称”的东东,“强名称”是什么意思,有什么作用?

bluesky_521 2004-07-13 01:03:00
.Net中的有个叫“强名称”的东东,“强名称”是什么意思,有什么作用?
请高手指点!先谢了。
...全文
653 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bluesky_521 2004-08-02
多谢诸位!
回复
Truly 2004-07-13
saucer总是能始终如一的帮助别人。真是令人叹服。
回复
aivii 2004-07-13
强名称:简单地说,就是加了公有/私有密钥对的程序集。
回复
viena 2004-07-13
study
回复
李天平 2004-07-13
mark
回复
vzxq 2004-07-13
studty
回复
delphine 2004-07-13
mark
回复
dama2003 2004-07-13
学习
回复
SoRoMan 2004-07-13
关于强命名程序集的防篡改特性:
用共有/私有密钥加密的强命名程序集具有防篡改特性。当强命名程序集加载到GAC时,系统会利用.snk中的公有密钥来反签名那些加密的文件,并和嵌入在PE文件中RSA签名(不可仿造,因为经过私有密钥加密,私有密钥不能泄露)比较.如果不等,则程序集被别人篡改,不允许安装到GAC.

如果要将程序集与开发者绑定,还必须采取另外的技术.
回复
petiteturbo 2004-07-13
学习!
回复
swzlxm 2004-07-13
比如你有一個DATASET的模板﹐就是有一個數據架構﹐生成一個數據集
那么你聲明一個此類型的數據集﹐這個數據集就是強類型的
而聲明一個普通的如﹕DIM ds AS DataSet 或在C#中 DataSet ds;這個ds就不是強類型的
回复
怕那没啦 2004-07-13
学习
回复
强名称用来证明这个生成的程序集是你发布的;而且,如果你写的程序集要用在多个应用程序上的话,那么这个程序集必须要拥有唯一的名称,这个强名称是程序集唯一名称的一部分。

另外,只要你保护好你的snk文件不要公布出去,那么没有任何人可以假冒你发布程序集。

强名称签名的原理是不对称签名验证算法。

首先你用sn.exe命令行程序生成一个.snk的密钥文件,这个文件包括了两个部分的内容。
1 私钥,就是在vs.net编译的时候生成验证码的东西。
2 公钥,编译的时候打包到程序集元数据中PublicKey部分的内容。

而且,验证码只能通过私钥来生成,只有通过私钥生成的验证码才能通过.Net CLR的验证。

CLR验证程序集的时候通过读取公钥来生成验证对象,生成过后对整个程序集的内容进行验证,拿这个验证码与程序集里面的验证码对比,如果吻合就通过,如果不吻合表示程序集已经被修改了,CLR将拒绝载入这个程序集并且认为需要的程序集没有找到,抛出FileNotFoundException异常。

比如说微软的.Net类库中的System.dll、System.Web.dll等,都经过了强名称验证,保证别人只能使用这些类库,而不能修改,还保证这些程序集是微软推出的。而且,这些程序集是存放在共享目录里面的,更加需要强名称了。
回复
luckweb 2004-07-13
在程序集中包括一个强名称后,公共语言运行库(CLR)可保证具有相同强名称的两个程序集在任何方面都是完全一致的。换言之,强名称为CLR提供了一个程序集的惟一性标识。除此之外,添加一个强名称还可确保二进制完整性,因为CLR可在程序集加载时执行验证,判断它自从编译以来是否被篡改过。

详见
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39144446,00.htm
回复
saucer 2004-07-13
Strong name is used to verify name uniqueness, prevents name spoofing, and provides callers with some identity when a reference is resolved

see

Assembly Security Considerations
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconassembliessecurityconsiderations.asp

Strong-Named Assemblies
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconStrong-NamedAssemblies.asp?frame=true

回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-07-13 01:03
社区公告
暂无公告