什么是一个.SNK?什么是一个.SNK?(What is a .snk for?)

2019-05-12 15:56发布

什么是一个.snk文件? 我知道它代表强命名关键 ,但它是什么以及它是如何工作的所有解释越过我的头。

是否有一个强命名关键是如何使用的任何简单的解释,它是如何工作的?

Answer 1:

.snk文件用于将应用强名称为.NET程序集 。 如此强劲的名称由

一个简单的文本名称,版本号和区域性信息(如果有的话)-PLUS公共密钥和数字签名。

该SNK包含一个唯一的密钥对 - 可以用来确保您有装配独特的强名称的私钥和公钥。 当大会强烈命名,“散列”是从程序集的内容构成,哈希用私钥加密。 那么这个签署的哈希被放置在装配中与来自.SNK公钥一起。

后来,当有人需要验证强名称程序集的完整性, 他们建立的大会内容的散列,并使用公钥从组装解密与大会传来的哈希-如果两个散列匹配,该组件验证通过。

能够验证组件以这种方式来确保没有人交换了一条组装恶意一个将颠覆整个应用程序是很重要的。 这就是为什么非强名称的程序集不以同样的方式强烈命名程序集是值得信赖的,所以它们不能被放置在GAC。 此外,还有一个信任链 - 你不能产生一个强命名程序集引用不强命名程序集。

文章“ 强命名的秘密 ”。 是否详细解释这些概念进行了出色的工作。 有图片。



Answer 2:

在the.Net世界SNK文件用于签名编译的二进制文件。 这允许一对夫妇的事情发生:

  1. 您可以在GAC大会(全局程序集缓存)注册。 基本上,这样你就可以在同一台机器上的许多地方引用它,而不必维护多个副本)。
  2. 您可以使用您的二进制文件从那些还签订其他二进制文件(这是一种奇怪的病毒这类行为对于签名的程序集)内。
  3. 您装配能不能(容易)被没有访问SNK文件谁第三方修改,提供至少安全少量。

我不熟悉的BizTalk服务器是如何工作的,所以我不认为我可以在他们所服务在该环境中有什么具体的目的洒下多少光。

希望这是有所帮助的。



Answer 3:

.snk文件用于签名的组件,以便能够将它们添加到全局程序集缓存(GAC)。

.snk文件包含了你的关键的公共和私人令牌。 当你要签署一些数据(或二进制)与该键,校验和计算的数据,然后将其与私营令牌加密。 然后将加密的校验被添加到数据。 任何人都可以使用公共令牌从您的密钥解密校验和比较,他们计算来验证签名的数据没有被篡改的校验和。

你可以阅读更多有关在公共密钥加密http://en.wikipedia.org/wiki/Public-key_cryptography 。



Answer 4:

一个.snk文件是由框架应用程序中设置的SN实用程序生成你的“钥匙”的持久版本。 然后您可以使用此文件为“数字签名”的组件。 这是一个两部分键..公私组合键。 关键的公共部分被发布,即大家所熟知的。 私处是已知的只有你,组件/应用程序开发人员,并打算保持这种方式。

当您注册您的组件,它使用的私钥并为您的组件创建并嵌入您的程序集的数字签名的哈希值。 此后,谁给你组装任何人经过一个验证步骤。 公钥来验证,如果大会真的来自于你..你只需要为这个公共密钥(也嵌入在程序集清单标记化形式)。 如果组件已被篡改,则散列值将是不同的,并且该组件负载将被中止。 这是一种安全机制。



Answer 5:

一个.snk文件是用来保证别人不会滑脱自己的组件在你的地方。 它提供了一个对加密/解密密钥的。

当.snk文件用于签名的组件,一个哈希码值是从组件文件计算和使用私有密钥加密的。 经加密的“消化”,然后从.snk文件的公钥上涨了到装配在一起。

然后,当有人收到您的装配,他们还可以计算哈希码值。 他们利用公钥来解密,你计算的一个比较的计算值。 如果组件已经发生任何变化,这些数值将会有所不同组件的用户会知道你有装配不您所提供的一个。

在BizTalk Server的背景下,无论是谁生产能够通过你的BizTalk解决方案将需要使用.snk文件签署组装,这样的BizTalk Server可以加载到GAC和任何使用它的自定义组件。



文章来源: What is a .snk for?