gpt4 book ai didi

c# - 为什么建议在开源存储库中包含用于程序集签名的私钥?

转载 作者:太空狗 更新时间:2023-10-29 17:54:47 24 4
gpt4 key购买 nike

根据 MSDN ,如果您正在开发开源软件,建议的做法是将用于强命名程序集的私钥和公钥都包含到公共(public)源代码控制系统中:

If you are an open-source developer and you want the identity benefits of a strong-named assembly, consider checking in the private key associated with an assembly into your source control system.

这让我很困惑。公开私钥?在这种情况下,非对称加密的全部目的和安全性不会被打败吗?

我在同一篇文章中看到这个注释:

Do not rely on strong names for security. They provide a unique identity only.

这无助于减少我的困惑。如果安全不是目标,为什么还要使用公私 key 对呢? .NET 中的强命名机制是否以不恰当的方式使用公私 key 对?我的猜测是我遗漏或误解了某些东西。

最佳答案

强名称签名不是为了安全,而是为了保证唯一性。如果两个人创建了 Foo.dll v1.0.0.0,您就有办法在 GAC 中区分他们。

如果您有一个开源库,并且您希望最终用户的 MyOpenSource.dll v1.0.0.0 能够用作已发布的 MyOpenSource.dll v1 的替代品.0.0.0 那么用户的副本和官方副本都必须使用相同的 key 签名(或者两者都必须根本不签名)。这就是为什么你想要分发它。

强名称键不是为了说“这是 MyOpenSource.dll 的官方未修改副本”,这就是 Authenticode signing是为了。它仅用于防止来自不同发布者的名称冲突。

关于c# - 为什么建议在开源存储库中包含用于程序集签名的私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com