什么是。什么文件?我知道它代表 强力命名钥匙,但是所有关于它是什么以及它是如何工作的解释都超出了我的理解范围。
对于如何使用强名称键以及它是如何工作的,有没有简单的解释?
Snk 文件用于应用 .NET 程序集的强名称。这样的强名称由
简单的文本名称、版本号、, 文化资料(如 (已提供)ーー加上一个公开密码匙和一个 数字签名。
SNK 包含一个唯一的密钥对——一个私钥和公钥,可用于确保程序集具有唯一的强名称。当程序集具有强名称时,将根据程序集的内容构造“哈希”,并使用私钥对哈希进行加密。然后将此签名哈希与来自。斯克。
后来,当有人需要验证强名称程序集的完整性时,他们构建程序集内容的散列,并使用来自程序集的公钥解密随程序集而来的散列——如果两个散列匹配,则程序集验证通过。
能够以这种方式验证程序集是非常重要的,以确保没有人将程序集替换为会破坏整个应用程序的恶意程序集。这就是为什么非强名称程序集不像强名称程序集那样受信任,所以它们不能放置在 GAC 中。此外,还有一个信任链——您不能生成引用非强名称程序集的强名称程序集。
文章“ 强命名的秘密(存档在 Wayback Machine)”。在更详细地解释这些概念方面做了出色的工作。用图片。
Snk 文件是由框架实用程序集中的 sn 实用程序生成的“ Key”的持久化版本。 然后使用此文件对程序集进行“数字签名”。这是一把分为两部分的钥匙。.私钥与公钥的组合。密钥的公共部分被发布,即每个人都知道。私有部分只有您这个组件/应用程序开发人员才知道,并且应该保持这种状态。
在为程序集签名时,它使用私钥和程序集的哈希值创建嵌入在程序集中的数字签名。此后,任何加载程序集的人都要经过一个验证步骤。公钥用于验证程序集是否真的来自您。.您只需要为此使用公钥(它也嵌入在程序集清单中的标记化表单中)。如果程序集已被篡改,散列值将不同,程序集加载将被中止。这是一种安全机制。
在.Net 世界中,SNK文件用于对已编译的二进制文件进行签名。 这使得一些事情得以发生:
我不熟悉 BizTalk 服务器是如何工作的,所以我不认为我可以透露更多关于它们在那个环境中的具体用途。
希望这对你有所帮助。
那个。Snk 文件用于对程序集进行签名,以便能够将它们添加到全局程序集缓存(GAC)中。
那个。Snk 文件包含密钥的公共和私有令牌。当您希望使用该密钥对某些数据(或二进制数据)进行签名时,将对该数据进行校验和计算,然后使用私有令牌对该数据进行加密。然后将加密的校验和添加到数据中。任何人都可以使用您密钥中的公共令牌来解密校验和,并将其与他们计算的校验和进行比较,以验证签名数据是否未被篡改。
您可以在 http://en.wikipedia.org/wiki/Public-key_cryptography上了解更多关于公钥加密的信息。
安。Snk 文件是用来确保其他人不能在你的地方偷偷安装自己的程序集。它提供了一对加密/解密密钥。
当一个。Snk 文件用于对程序集进行签名,从程序集文件计算散列码值并使用私钥进行加密。然后,该加密的“摘要”连同来自。Snk 档案。
然后,当有人接收到您的程序集时,他们也可以计算该散列码值。它们使用公钥解密您计算的那个密钥,并比较计算的值。如果程序集已完全更改,则这些值将不同,程序集的用户将知道您拥有的程序集不是您提供的程序集。
在 BizTalk 服务器的上下文中,无论谁构建 BizTalk 解决方案所使用的任何自定义程序集,都需要使用。Snk 文件对程序集进行签名,以便 BizTalk 服务器可以将其加载到 GAC 并使用它。