.NET签名的程序集包含公钥,但公钥用于加密,那么.NET如何使用公钥解密签名的程序集?
好的,签名的程序集包含散列,但散列是使用私钥而不是公钥加密的。那么,为什么以及如何在.NET中使用私钥进行加密,使用公钥进行解密。我的意思是,所有像RSACryptoPad这样的软件都使用公钥进行加密,而不是解密。
发布于 2009-03-22 07:17:31
公钥-私钥对不用于加密整个程序集。相反,它用于对程序集进行签名。
稍微简化一下,为了给文件签名--比如一个程序集--你需要一个文件的哈希,然后用你的私钥对这个哈希进行解密。使用该文件的人验证您的签名的方法是自己对文件进行哈希,然后使用您的公钥解密您的加密哈希,并确认这两个哈希是相同的。这证明了两件事:
在this Wikipedia article中有更多关于数字签名的详细信息。
公钥-私钥对的伟大之处在于,它们可以以任何一种方式工作。所以用你的私钥加密的东西只能用你的公钥解密,但是用你的公钥加密的东西也可以用你的私钥解密。后一种用法意味着,如果有人想要发送一些东西给你,那么只有你可以用你免费获得的公钥加密,但他们知道只有你用你的私钥才能解密。
由于密钥只能成对工作-生成encryption asymmetric -其他人不能简单地撤销他们对公钥所做的加密,以将消息传递给您。
发布于 2009-03-22 06:39:15
其思想是,只能使用私钥创建签名,但在此之后,任何拥有公钥副本的人都可以验证签名。签名不需要解密--只需将签名添加到纯文本程序集中。
发布于 2009-03-22 06:51:11
对程序集进行签名的目的是验证其来源。如果我在我的程序集上签名,然后把它发送给你,你应该相当确定它是来自我的,并且在这个过程中没有被篡改。
https://stackoverflow.com/questions/670615
复制相似问题