【问题标题】:Difference between RSAwithSHA256 and SHA256RSAwithSHA256 和 SHA256 的区别
【发布时间】:2016-06-22 05:56:38
【问题描述】:
我需要使用 SAML 2.0 标准化算法 (RSAwithSHA256) 对 XML SAML 消息进行签名。但我的 saml 插件(passport-saml)似乎只支持 sha1 和 sha256。 SHA256 听起来非常接近 RSAwithSHA256,但可能不是一回事?有什么区别,我怎么能用 RSAwithSHA256 代替?我可能需要编辑 passport-saml 库,以允许使用 RSAwithSHA256 算法?
【问题讨论】:
标签:
javascript
passport.js
saml-2.0
sha256
rsa-sha256
【解决方案1】:
我试图解释差异,而不是如何解决您的问题。
RSA 是一种公钥加密算法(公钥和私钥对算法),它可确保机密性、真实性(包括标识)和不可否认性。
SHA-256 是一种散列算法,它产生唯一的、固定大小的 256 位(32 字节)散列,并确保消息完整性。
采用如下哈希算法,
- 发送方将消息及其哈希发送给接收方。 [使用哈希]
- 接收方对消息进行散列以生成新散列。 [使用哈希]
- 接收方检查新哈希是否等于原始哈希。
- 如果相等,则确认消息完整性并且接收方进一步处理消息。
- 如果不相等,则消息被篡改,接收者丢弃该消息。
这里,接收者如何确认消息及其哈希确实是由预期的发送者发送的?在上述情况下,接收方没有对发送方进行身份验证或识别。
为此,我们必须同时使用公钥加密和散列算法(如 RSAWithSHA256)来满足上述要求。
因此,当同时使用公钥加密和散列算法时,
- 发送方将消息及其加密哈希(使用发送方的私钥)发送给接收方。 [采用加密和散列]
- 接收方解密加密的哈希(使用发送方的公钥)。 [采用解密和散列]
- 接收方对消息进行散列以生成新散列。 [使用哈希]
- 接收方检查新哈希是否等于解密哈希。
- 如果相等,则消息完整性、真实性和
确认发送方的身份,接收方处理
进一步留言。
- 如果不相等,则消息被篡改或未按预期发送
发送者(因为未使用预期发送者的私钥生成加密哈希)和接收者丢弃消息。