公钥如何用于在.NET程序集中解密?

时间:2009-03-22 06:35:48

标签: c# rsa

.NET签名的程序集包含公钥,但公钥在RSA中用于加密,那么.NET如何使用公钥解密签名的程序集?

好的,签名的程序集包含哈希,但哈希是使用私钥而不是公钥加密的。因此,.NET私钥中的原因和方式用于加密和公钥用于解密。我的意思是,所有像RSACryptoPad这样的软件都使用公钥进行加密而不是解密。

3 个答案:

答案 0 :(得分:6)

公钥 - 私钥对不用于加密整个程序集。相反,它用于签署程序集。

简化一下,签署一个文件 - 比如一个程序集 - 你拿一个文件的哈希值,然后用你的私钥密切那个哈希值。使用该文件的人通过自己对文件进行哈希验证您的签名,然后使用您的公钥解密加密的哈希,并确认这两个哈希是相同的。这证明了两件事:

  1. 大会来自声称来自 - 即你 - 因为它是用你的私钥制作的。
  2. 组件未被其他人更改为您在发布程序集时所做的哈希与当前组件相同。没有人可以改变已签名的程序集,因为他们还必须对需要私钥的加密哈希进行相应的更改。
  3. this Wikipedia article中有关于数字签名的详细信息。

    关于公钥 - 私钥对的好处在于它们可以以任何方式工作。因此,使用您的私钥加密的内容只能使用您的公钥解密,但使用您的公钥加密的内容也可以使用您的私钥解密。后一种用法意味着如果有人想要向您发送内容而只有您,则可以使用您免费提供的公钥对其进行加密,但他们只知道您使用私钥可以对其进行解密。

    因为密钥只能成对使用 - 制作encryption asymmetric - 其他人不能简单地反转他们使用公钥完成的加密,以便向您发送消息。

答案 1 :(得分:3)

我们的想法是,只能使用私有密钥创建签名,但之后,任何人都拥有 public 密钥的副本可以验证签名。 签名不需要解密 - 只需将签名添加到纯文本程序集中。

答案 2 :(得分:1)

签署程序集的目的是验证其来源。如果我签署我的集会然后发送给你,你应该合理地确定它来自我并且它一直没有被篡改。