Certificate 公钥/私钥身份验证和签名

Certificate 公钥/私钥身份验证和签名,certificate,single-sign-on,asymmetric,Certificate,Single Sign On,Asymmetric,我正在开发一个单一登录解决方案,使我的公司能够与其他供应商集成 在我做研究的过程中,有一件事总是让我困惑 我对公钥/私钥的理解是,数据总是使用供应商的公钥进行加密,并使用其私钥进行解密。到目前为止还不错 但是,为了验证消息是否真的来自我,我将计算消息的哈希值,并使用我的私钥对哈希值进行加密(这个过程也称为签名)。为了验证消息是否来自我,供应商将使用我的公钥对散列进行解密,并将其与未加密的散列进行比较。如果它们匹配,供应商可以确信它来自我 那么为什么我的私钥被用来加密消息..而公钥又如何解密消息呢

我正在开发一个单一登录解决方案,使我的公司能够与其他供应商集成

在我做研究的过程中,有一件事总是让我困惑

我对公钥/私钥的理解是,数据总是使用供应商的公钥进行加密,并使用其私钥进行解密。到目前为止还不错

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


那么为什么我的私钥被用来加密消息..而公钥又如何解密消息呢?我以为非对称钥匙不允许这样。。!i、 公钥总是加密,私钥总是解密。如有任何解释,将不胜感激

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


然而,在通用算法中,您可以使用私钥加密可以用公钥解密的消息,也可以解密用公钥加密的消息。所以这在两个方向上都是可能的。

我发现这个链接非常有用:

2007年的Wayback机器存档

嗯 奥哈德

编辑

2.5年后,我发现这种联系被打破了。所以

如果从今天起2.5年后它将再次被打破,总结如下:

公钥顾名思义就是公共密钥。它是制造的 通过可公开访问的存储库或 目录另一方面,私钥必须保持机密 致其各自的所有者

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

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

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

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

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

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

没错。但它只涉及公钥加密,而不涉及公钥加密的其他用途,如签名

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

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

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

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

那么为什么我的私钥被用来加密消息..而公钥又如何解密消息呢?我以为非对称钥匙不允许这样。。!i、 公钥总是加密,私钥总是解密。如有任何解释,将不胜感激


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

是的,根证书也是这样工作的。浏览器根据浏览器中安装的根证书验证服务器提交的证书。根CA公钥用于解密证书中的“加密”公钥。但说私钥加密仅用于签名等,而实际业务数据应始终使用供应商的公钥进行加密是否正确。根证书基于RSA加密的概念()我在回答中提到了这一点。但您也可以使用业务数据对私钥进行加密。通常情况如你所描述的那样。但从理论上讲,你可以用密钥对任何东西进行解密和加密,这是不对的。即使使用RSA,签名和解密也是不同的操作。过程的一部分是相同的(模幂运算),但过程的其余部分(填充)是不同的。