2016-06-21 49 views
0

我需要使用SAML 2.0標準化算法(RSAwithSHA256)對XML SAML消息進行簽名。但是我的saml插件(passport-saml)似乎只支持sha1和sha256。 SHA256聽起來與RSAwithSHA256非常接近,但可能不是一回事?有什麼區別,我怎樣才能使用RSAwithSHA256呢?我可能需要編輯passport-saml庫,以允許使用RSAwithSHA256算法?RSAwithSHA256和SHA256之間的區別

回答

2

我嘗試解釋這些差異,但不是如何解決您的問題。

RSA是一種公鑰加密算法(Public and Private Key-Pair algorithm),它保證機密性,真實性(包括標識)和不可抵賴性。

SHA-256是一種散列算法,它可以產生一個唯一的,固定大小的256位(32字節)散列,它可以保證消息完整性。

散列算法如下使用,

  1. 發送者發送消息,並且其散列到接收器。 [散列應用]
  2. 接收方對消息進行散列以生成新的散列。 [散列應用]
  3. 接收方檢查新散列是否等於原始散列。
    • 如果相等,則確認消息完整性並且接收方進一步處理該消息。
    • 如果它不相等,則消息被篡改並且接收方丟棄該消息。

這裏,接收器是如何確認的消息和其散列確實是由預期的發送者?在上述情況下,接收方沒有發送方的身份驗證或身份證明。要做到這一點,我們必須同時使用公鑰加密算法和散列算法(如RSAWithSHA256)來滿足上述要求。

所以,當僱傭公鑰加密和散列算法一起,

  1. 發送者發送的消息和其加密散列(使用發件人的私鑰)到接收器。 [加密和散列應用]
  2. 接收方解密加密哈希(使用發件人的公鑰)。 [解密和散列應用]
  3. 接收方對消息進行散列以生成新的散列。 [散列應用]
  4. 接收方檢查新散列是否等於解密散列。
    • 如果它相等,則消息的完整性,真實性和發送方的身份證明被確認並且接收方進一步處理消息 。
    • 如果它不相等,那麼郵件被篡改或未被髮送(由於加密哈希不是用期望的發送者的私鑰生成)並且接收方丟棄該消息。