.snk 文件有什么用?我知道它代表 Strongly Named Key ,但是关于它是什么以及它如何工作的所有解释都让我无法理解。
关于如何使用强命名 key 以及它是如何工作的,是否有任何简单的解释?
最佳答案
.snk 文件用于应用 strong name to a .NET assembly 。这么强的名字包括
SNK 包含一个唯一的 key 对 - 一个私钥和公钥,可用于确保程序集具有唯一的强名称。当程序集是强命名的时,根据程序集的内容构造一个“散列”,并使用私钥对散列进行加密。然后将此签名散列与来自 .snk 的公钥一起放置在程序集中。
稍后,当有人需要验证强命名程序集的完整性时,他们构建程序集内容的哈希,并使用程序集的公钥解密程序集附带的哈希 - 如果两个哈希匹配,装配验证通过。
能够以这种方式验证程序集很重要,以确保没有人将程序集换成会破坏整个应用程序的恶意程序集。这就是为什么非强命名程序集不像强命名程序集那样受信任,因此它们不能放置在 GAC 中。此外,还有一个信任链——你不能生成一个引用非强命名程序集的强命名程序集。
文章“The Secrets of Strong Naming (archived at the Wayback Machine)”。在更详细地解释这些概念方面做得非常出色。带图片。
关于.net - .snk 有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/131181/