可以使用公钥对使用私钥加密(签名)的文档进行解密(验证)吗

Posted

技术标签:

【中文标题】可以使用公钥对使用私钥加密(签名)的文档进行解密(验证)吗【英文标题】:Can public key be used for decryption (verification) of the document encrypted (signed) using private key 【发布时间】:2018-11-26 03:44:06 【问题描述】:

在许多网站和教科书中,他们说公钥总是用于加密,私钥用于解密。在 RSA 算法中,这是真的。但是在数字签名中,发送者签名(我相信这有点类似于加密,如果这是错误的,请纠正我)使用他的私钥的文档和接收者使用文档中包含的公钥来解密(验证)它。所以,这可以概括为公钥/私钥可能用于基于我们的应用程序的加密或解密? 还是这里涉及到其他一些概念?

【问题讨论】:

【参考方案1】:

数字签名和加密使用类似的加密操作(不等于),但它们有不同的目的:

加密:隐藏数据

数字签名:数据的完整性和签名人的身份

回答您的问题,数字签名操作使用私钥“签名”数据。它没有以任何方式加密(内容没有隐藏)。公钥用于验证签名与原始数据和签名人是否一致。

【讨论】:

【参考方案2】:

当然。这就是数字签名的工作原理。如果答案太短,请告诉我,我提供更多详细信息。

【讨论】:

我还阅读了另一个版本的数字签名,它将公钥发送给接收者。接收者使用它来加密数据并将其发送回发送者,以便发送者可以使用他的私钥解密它.哪个是正确的? 另外,为什么我没有找到可以用于解密/加密的任何地方。互联网上没有人这么说。这就是我对此感到如此困惑的原因。 人们是否有任何理由不愿提及它们可以同时用于两者。我的意思是在某些方面它可能会以某种方式出错。 @akshay:致 "... 将公钥发送给接收者":发送者可以将其公钥提供给接收者或所有人,而不仅仅是发送。发件人可以在其网站上发布其公钥,或在任何人都可用的某个存储库中发布,或使用其他方式。是的,当有人使用某人的公钥加密消息时,只有私钥的所有者才能解密它。对于“为什么人们不愿提及”:对许多人来说很明显:如果您使用私钥加密,则可以使用公钥解密;如果你用公钥加密,你可以用私钥解密。

以上是关于可以使用公钥对使用私钥加密(签名)的文档进行解密(验证)吗的主要内容,如果未能解决你的问题,请参考以下文章

java签名与验签

服务器公钥私钥总结

怎么在ios进行rsa公钥加密,java做rsa私钥解密

RSA加密/解密和签名/验签过程理解

openresty中使用私钥/公钥进行加密/解密/签名/验签。

简述签名验签