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

bluesky_521 2004-07-13 01:03:00
.Net中的有个叫“强名称”的东东,“强名称”是什么意思,有什么作用?
请高手指点!先谢了。
...全文
797 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧