我需要使用SAML 2.0標準化算法(RSAwithSHA256)對XML SAML消息進行簽名。但是我的saml插件(passport-saml)似乎只支持sha1和sha256。 SHA256聽起來與RSAwithSHA256非常接近,但可能不是一回事?有什麼區別,我怎樣才能使用RSAwithSHA256呢?我可能需要編輯passport-saml庫,以允許使用RSAwithSHA256算法?RSAwithSHA256和SHA256之間的區別
0
A
回答
2
我嘗試解釋這些差異,但不是如何解決您的問題。
RSA是一種公鑰加密算法(Public and Private Key-Pair algorithm),它保證機密性,真實性(包括標識)和不可抵賴性。
SHA-256是一種散列算法,它可以產生一個唯一的,固定大小的256位(32字節)散列,它可以保證消息完整性。
散列算法如下使用,
- 發送者發送消息,並且其散列到接收器。 [散列應用]
- 接收方對消息進行散列以生成新的散列。 [散列應用]
- 接收方檢查新散列是否等於原始散列。
- 如果相等,則確認消息完整性並且接收方進一步處理該消息。
- 如果它不相等,則消息被篡改並且接收方丟棄該消息。
這裏,接收器是如何確認的消息和其散列確實是由預期的發送者?在上述情況下,接收方沒有發送方的身份驗證或身份證明。要做到這一點,我們必須同時使用公鑰加密算法和散列算法(如RSAWithSHA256)來滿足上述要求。
所以,當僱傭公鑰加密和散列算法一起,
- 發送者發送的消息和其加密散列(使用發件人的私鑰)到接收器。 [加密和散列應用]
- 接收方解密加密哈希(使用發件人的公鑰)。 [解密和散列應用]
- 接收方對消息進行散列以生成新的散列。 [散列應用]
- 接收方檢查新散列是否等於解密散列。
- 如果它相等,則消息的完整性,真實性和發送方的身份證明被確認並且接收方進一步處理消息 。
- 如果它不相等,那麼郵件被篡改或未被髮送(由於加密哈希不是用期望的發送者的私鑰生成)並且接收方丟棄該消息。
相關問題
- 1. Ruby和SHA256 - MacOS和Windows之間的區別?
- 2. 之間的〜/和的區別../
- 3. '#','%'和'$'之間的區別
- 4. {!!之間的區別!!}和{{}}
- 5. '+ ='和'= +'之間的區別?
- 6. 「。+」和「。+?」之間的區別
- 7. .eq之間的區別。和==
- 8. #。/和#之間的區別。 ./
- 9. !=和!之間的區別==
- 10. 「%〜dp0」和「。\」之間的區別?
- 11. | =和^ = css之間的區別
- 12. 之間的區別。和#
- 13. ==和case之間的區別?
- 14. 「**/* /」和「** /」之間的區別?
- 15. jQuery - '。'之間的區別和「#」
- 16. 「?1」和「?」之間的區別
- 17. `%in%`和`==`之間的區別
- 18. fmod和%之間的區別
- 19. 之間的區別:+和:+
- 20. 類區域和堆之間的區別
- 21. SPFile和PublishingPage類別之間的區別
- 22. 子類和類別之間的區別?
- 23. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 24. isForeground()和onExposed和onObscured之間的區別
- 25. $ .ajax()和$ .get()和$ .load()之間的區別
- 26. 和intent和setcontentview之間的區別
- 27. Java和C#和.NET之間的區別
- 28. NSthread和NStimer和NSNotifcation之間的區別?
- 29. sys.log()和console.log()和console.error()之間的區別?
- 30. 關注與責任之間的區別(即SRP和SoC之間的區別)?