公钥加密与私钥加密的区别

3

我在项目中使用了非对称加密,使用"公钥"来"加密"消息,"私钥"来"解密"消息。

我们是否曾经使用"私钥"来"加密"消息并使用"公钥"来"解密"。如果是这样,有人能给我一个这样的用例吗?这种加密方式也称为"非对称加密"


使用您的私钥加密某些内容的简单示例是对某些文档/文本/哈希值进行签名 - Sirko
请参阅Crypto.SE:非对称加密是如何工作的? - Artjom B.
1
@ArtjomB。我在这里尝试更详细地解释了一下(http://crypto.stackexchange.com/questions/15997/is-rsa-encryption-the-same-as-signature-generation),但并没有太多的赞成票。也许解释过于复杂了。 - Maarten Bodewes
@owlstead 我最初搜索了类似的东西,但没有找到。很棒的自贴。这确实对于Crypto.SE来说并不太复杂,但SO用户可能会遇到问题。 - Artjom B.
@ArtjomB。我重新组织了那个答案,希望现在更容易阅读。 - Maarten Bodewes
3个回答

5
就“加密”一词所指涉的“消息本身”而言,答案是否定的。因为这样的加密是完全无用的。既然公钥应该是公开的,每个人都可以使用它来解密。因此,使用私钥进行加密不能提供机密性。
另一方面,签名是唯一的用例,正如其他人已经提到的那样。它不会将加密应用于实际有效负载(消息)。它使用不同的“填充方案”加密了消息上的密码散列值(仅从同一消息中可再现)。这样,您可以确保拥有私钥的实际方签署了消息。

2
非对称加密是指你不能使用相同的密钥进行解密和加密。代码签名是其中一种场景,在此场景中,您使用私钥进行加密。代码的接收者可以使用他们的公钥来验证代码是否被更改过。

2
永远不要混淆加密和签名,即使是对于RSA也是如此。确实,模幂运算用于两者,但这就是比较的结束。即使在PKCS#1规范中,模幂运算也明确地被赋予了不同的名称,然后还有填充和哈希的差异... - Maarten Bodewes
应用密码学 - Bruce Schneier(1.1.术语):“有时,消息将使用私钥加密并使用公钥解密;这在数字签名中使用。” 当然,这是针对RSA和一般情况的。在现实世界中,细节很重要,同意先前评论。例如,某些库不允许使用私钥加密 - 例如MS CryptoAPI。 - Vlad

0
我不确定你所问的是否称为非对称,而是RSA公钥/私钥加密。是的,你可以使用两个密钥进行加密和解密,但有两个独立的问题。
保密性 - 使用公钥加密,只有私钥才能解密。被加密的消息是安全的。
身份验证 - 使用私钥加密,任何拥有公钥的人都可以解密。虽然不能提供保密性,但如果公钥成功解密,你可以确信我是谁,因为如果有人篡改了消息,公钥将无法解密它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接