公钥/私钥验证和签名

时间:2012-01-29 01:37:45

标签: certificate single-sign-on asymmetric

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

当我正在进行研究时,有一点让我感到困惑。

我对公钥/私钥的理解是,数据始终使用供应商的公钥加密,并使用其私钥进行解密。到现在为止还挺好。

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

那么为什么我的私钥用于加密消息..公钥如何解密消息?我以为非对称键不允许......!即公钥始终加密,私钥始终解密。任何解释都将非常感谢..!

3 个答案:

答案 0 :(得分:2)

我发现此链接非常有用: http://www.nusphere.com/products/library/ssl.htm

2007年above nusphere link的Wayback Machine档案。

HTH 辖

修改

经过2。5年后,我发现链接已被破坏。所以this one is good as well

如果它在今后2。5年内再次被打破,以下是摘要:

  

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

     

因为密钥对在数学上是相关的,所以加密的是什么   使用公钥只能由其相应的私钥解密   键,反之亦然。

     

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

答案 1 :(得分:1)

对称和非对称加密之间的区别仅在于私钥和公钥的存在。

然而,在常见算法中,您可以使用私钥来加密可以使用公钥解密的邮件,还可以解密使用公钥加密的邮件。所以双向都是可能的。

答案 2 :(得分:0)

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

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

使用签名,只有私钥的所有者才能签名消息。任何人都可以使用公共密钥来验证邮件的签名。

  

我对公钥/私钥的理解是,始终使用供应商的公钥对数据进行加密,并使用其私钥对数据进行解密。

是的。但这仅涵盖了公钥加密,而没有涵盖公钥加密的其他用途,例如签名。

  

但是,为了验证消息是否确实来自我,我将计算消息的哈希值并使用我的私钥对哈希值进行加密(此过程也称为签名)。

实际上,此过程仅应称为签名。称其为“使用我的私钥加密”非常容易引起误解:这并不是其实际工作方式。有一种流行的密钥(RSA)可用于签名和加密,但是即使使用RSA,签名和解密机制也不同。

  

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

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

  

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

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