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