RSAwithSHA256 和 SHA256 的区别

Difference between RSAwithSHA256 and SHA256

我需要使用 SAML 2.0 标准化算法 (RSAwithSHA256) 签署 XML SAML 消息。但是我的 saml 插件 (passport-saml) 似乎只支持 sha1 和 sha256。 SHA256 听起来非常接近 RSAwithSHA256,但可能不是一回事?有什么区别,我怎么能改用 RSAwithSHA256?我可能需要编辑 passport-saml 库,以允许使用 RSAwithSHA256 算法?

我尝试解释差异,但没有解释如何解决您的问题。

RSA 是一种 Public 密钥加密算法(Public 和私钥对算法),它确保机密性、真实性(包括识别)和不可否认性。

SHA-256 是一种散列算法,可生成唯一的、固定大小的 256 位(32 字节)散列并确保消息完整性。

采用的哈希算法如下,

  1. 发件人将消息及其哈希值发送给接收者。 [使用哈希]
  2. 接收方对消息进行哈希处理以生成新的哈希值。 [使用哈希]
  3. 接收方检查新哈希值是否等于原始哈希值。
    • 如果相等,则确认消息完整性,接收方进一步处理消息。
    • 如果不相等,则消息被篡改,接收方丢弃该消息。

在这里,接收方如何确认消息及其哈希确实是由预期的发送方发送的?在上述情况下,接收方没有对发送方进行身份验证或识别。

为此,我们必须同时使用 Public 密钥加密算法和哈希算法(如 RSAWithSHA256)来满足上述要求。

因此,当同时使用 Public 密钥加密和哈希算法时,

  1. 发件人将消息及其加密哈希(使用发件人的私钥)发送给收件人。 [采用加密和散列]
  2. 接收方解密加密的哈希值(使用发送方的 public-key)。 [使用解密和散列]
  3. 接收方对消息进行哈希处理以生成新的哈希值。 [使用哈希]
  4. 接收方检查新哈希值是否等于解密后的哈希值。
    • 如果相等,则消息完整性、真实性和 发件人的身份得到确认,收件人处理 进一步留言。
    • 如果不相等,则消息被篡改或未按预期发送 发件人(因为加密哈希不是使用预期发件人的私钥生成的)和接收者丢弃消息。