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

好的,签名的程序集包含哈希值,但哈希值是使用私钥而不是公钥加密的。那么,为什么以及如何在 .NET 中使用私钥进行加密并使用公钥进行解密。我的意思是,像 RSACryptoPad 这样的所有软件都使用公钥进行加密而不是解密。

有帮助吗?

解决方案

公钥-私钥对不用于加密整个程序集。相反,它被用来 符号 大会。

稍微简化一下,要签署文件(例如程序集),您需要获取文件的哈希值,然后使用私钥对该哈希值进行加密。使用该文件的人会通过创建文件本身的哈希值来验证您的签名,然后使用您的公钥解密加密的哈希值并确认这两个哈希值相同。这证明了两件事:

  1. 该程序集来自自称来自的人(即您),因为它是使用您的私钥生成的。
  2. 该程序集尚未被其他人更改,因为您在发布该程序集时创建的哈希值与当前的哈希值相同。没有人可以更改签名的程序集,因为他们还必须对需要您的私钥的加密哈希进行相应的更改。

有关数字签名的更多详细信息,请参阅 这篇维基百科文章.

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

由于钥匙只能成对使用 - 使得 加密不对称 - 其他人无法简单地逆转他们使用公钥完成的加密以将消息发送给您。

其他提示

这个想法是签名只能是创建的使用的私人的关键,但随着的公共的密钥的副本,任何人后可以验证的签名。的需要一个签名否解密 - 签名被简单地添加到纯文本组件

的签名组件的目的是为了验证它们的来源。如果我签名我的组装,然后将它发送给你,你应该有理由相信这是它来自我,也没有被篡改沿途。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top