0

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

4

1 回答 1

3

我试图解释这些差异,但不是如何解决您的问题。

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

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

散列算法采用如下,

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

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

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

因此,当同时使用公钥加密和散列算法时,

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