首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.snk是用来做什么的?

.snk是用来做什么的?
EN

Stack Overflow用户
提问于 2008-09-25 02:35:21
回答 5查看 96.8K关注 0票数 163

.snk文件是做什么用的?我知道它代表强名称Key,但是所有关于它是什么以及它是如何工作的解释都让我摸不着头脑。

关于强名称密钥的使用和工作原理,有什么简单的解释吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-25 02:42:35

.snk文件用于应用strong name to a .NET assembly。这样的强名称包括

一个简单的文本名称、版本号和区域性信息(如果提供)-plus一个公钥和一个数字签名。

SNK包含一个唯一的密钥对-一个私钥和公钥,可用于确保程序集具有唯一的强名称。当程序集具有强名称时,将根据程序集的内容构造“哈希”,并使用私钥对哈希进行加密。然后,此签名哈希与来自.snk的公钥一起放入程序集中。

稍后,当有人需要验证强名称程序集的完整性时,他们会构建程序集内容的哈希,并使用来自程序集的公钥来解密程序集附带的哈希-如果两个哈希匹配,则通过程序集验证。

重要的是能够以这种方式验证程序集,以确保没有人将程序集替换为会破坏整个应用程序的恶意程序集。这就是为什么非强名称程序集不像强名称程序集那样受到信任,因此它们不能放在GAC中。此外,还有一个信任链-您不能生成引用非强名称程序集的强名称程序集。

文章"The Secrets of Strong Naming (archived at the Wayback Machine)“。很好地更详细地解释了这些概念。有照片的。

票数 219
EN

Stack Overflow用户

发布于 2008-09-25 02:49:49

在the.Net世界中,SNK文件用于对编译后的二进制文件进行签名。这允许发生几件事:

GAC

  • 您可以在(全局程序集缓存)中注册程序集。基本上,这样您就可以从同一台计算机上的多个位置引用它,而不必维护多个副本)。
  1. 您可以从也经过签名的其他二进制文件中使用您的二进制文件(这是一种关于签名的assemblies).
  2. Your程序集的奇怪的病毒式行为,无法访问

文件的第三方(很容易)对其进行修改,从而至少提供少量的安全性。

我不熟悉BizTalk 是如何工作的,所以我不认为我能清楚地说明它们在那个环境中服务的具体用途。

希望这能对你有所帮助。

票数 22
EN

Stack Overflow用户

发布于 2008-09-25 02:50:03

.snk文件用于对程序集进行签名,以便能够将它们添加到全局程序集缓存。

.snk文件包含密钥的公钥和私钥令牌。当您希望使用该密钥对某些数据(或二进制)进行签名时,将对数据计算校验和,然后使用私有令牌对其进行加密。然后将加密的校验和添加到数据中。任何人都可以使用您的密钥中的公共令牌来解密校验和,并将其与他们计算的校验和进行比较,以验证签名的数据没有被篡改。

您可以在http://en.wikipedia.org/wiki/Public-key_cryptography上阅读有关公钥密码术的更多信息。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/131181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档