RSAwithSHA256 和 SHA256 之间的区别

Vil*_*oja 1 javascript sha256 saml-2.0 passport.js rsa-sha256

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

Zei*_*ist 6

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

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

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

采用的哈希算法如下,

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

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

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

因此,当同时使用公钥密码学和哈希算法时,

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