4

我正在开发单点登录解决方案,以允许我的公司与其他供应商集成。

在我做研究的时候,有一件事一直让我感到困惑。

我对公钥/私钥的理解是,数据总是用供应商的公钥加密,他们用他们的私钥解密。到现在为止还挺好。

但是,为了验证消息是否真的来自我,我将计算消息的散列并用我的私钥加密散列(此过程也称为签名)。为了验证消息是否来自我,供应商将使用我的公钥解密哈希并将其与未加密的哈希进行比较。如果它们匹配,供应商可以确信它来自我。

那么我的私钥怎么会被用来加密消息……公钥如何解密消息呢?我认为非对称密钥不允许这样做..!即公钥总是加密,私钥总是解密。任何解释将不胜感激..!

4

3 回答 3

2

我发现这个链接很有帮助: http ://www.nusphere.com/products/library/ssl.htm

上述 nusphere 链接的 2007 年 Wayback Machine 存档。

HTH 奥哈德

编辑

2.5年后,我看到链接坏了。所以这个也不错

万一从今天起2.5年后它会再次被打破,这里是总结:

公钥就是它的名字所暗示的 - 公开。它通过可公开访问的存储库或目录提供给所有人。另一方面,私钥必须对其各自的所有者保密。

因为密钥对在数学上是相关的,所以用公钥加密的任何东西都只能由其对应的私钥解密,反之亦然。

因此,公钥密码术可以实现机密性。然而,公钥密码术的另一个重要方面是它能够创建数字签名。

于 2012-07-25T07:07:29.667 回答
1

对称加密和非对称加密的区别只是私钥和公钥的存在。

尽管如此,在常用算法中,您可以使用私钥加密可以用公钥解密的消息,也可以解密用公钥加密的消息。所以在两个方向上都是可能的。

于 2012-01-29T01:45:49.553 回答
1

加密和签名是两个不同的系统。在某些方面,它们的工作方向相反。

使用公钥加密,任何人都可以使用公钥加密数据。只有私钥的所有者才能解密加密消息以恢复数据。

使用签名,只有私钥的所有者才能对消息进行签名。任何人都可以使用公钥来验证消息的签名。

我对公钥/私钥的理解是,数据总是用供应商的公钥加密,他们用他们的私钥解密。

这是正确的。但它只涵盖公钥加密,而不包括签名等公钥加密的其他用途。

但是,为了验证消息是否真的来自我,我将计算消息的散列并用我的私钥加密散列(此过程也称为签名)。

实际上,这个过程应该只称为签名。称其为“用我的私钥加密”非常具有误导性:这不是它实际工作的方式。有一种流行的密钥 (RSA) 可用于签名和加密,但即使使用 RSA,签名和解密机制也不同。

为了验证消息是否来自我,供应商将使用我的公钥解密哈希并将其与未加密的哈希进行比较。如果它们匹配,供应商可以确信它来自我。

这不太正确。许多签名算法不是确定性的。验证签名不是通过反转签名过程来完成的,而是通过对签名、消息和密钥进行一些稍微不同的计算来完成的。

那么我的私钥怎么会被用来加密消息……公钥如何解密消息呢?我认为非对称密钥不允许这样做..!即公钥总是加密,私钥总是解密。任何解释将不胜感激..!

私钥用于对消息进行签名,而不是对其进行加密。公钥用于验证签名消息,而不是解密它。

于 2019-03-19T01:27:41.387 回答