OpenSSL :: HMAC#hexdigest(使用MD5)vs Digest :: MD5#hexdigest有什麼區別和/或優點?難道你不能只使用Digest :: MD5#十六進制(KEY + DATA)或者認爲密碼較弱?紅寶石中OpenSSL :: HMAC#hexdigest與Digest :: MD5#hexdigest之間的區別?
0
A
回答
1
數據和關鍵的HMAC-MD5是定義爲
MD5((K xor pad1) + H ((K xor pad2) + DATA)
其中PAD1和PAD2是兩個固定的常數。你可能做的一些更明顯的事情是加密弱。
Digest::MD5.hexdigest(KEY + DATA)
是致命的缺陷。考慮MD5如何工作。它將輸入分成一定大小的塊(512位爲md5)並設置一些初始狀態h0,h1,h2,h3。然後進行一系列轉換,將第一個數據塊與該初始狀態混合,以生成h0,h1,h2,h3的新值。然後將第二部分數據與那些數據結合以產生一組新的h0,h1,h2,h3等等。散列函數的最終值只是h0,h1,h2,h3的串聯。
這意味着如果你給我Digest::MD5#hexdigest(KEY + DATA)
然後我可以計算什麼Digest::MD5#hexdigest(KEY + DATA + OTHER_DATA)
是根本不知道KEY。你可以做同樣的事情與SHA1
相反,如果你沒有
Digest::MD5.hexdigest(DATA+KEY)
然後在MD5任何已知的衝突很容易被用來製造具有相同HMAC值的消息。
顯然
Digest::MD5.hexdigest(KEY+DATA+KEY)
可能太有缺陷的,即使使用了兩種不同的密鑰。 HMAC旨在緩解所有這些攻擊。
相關問題
- 1. 紅寶石HMAC-SHA與Python的區別
- 2. Digest :: SHA2.hexdigest()定義在哪裏?
- 3. ..和...之間的區別紅寶石
- 4. 與hexDigest輸入型
- 5. 區別,如果與外殼之間 - 紅寶石
- 6. 紅寶石openssl中的AES等價物?
- 7. 與Ubuntu和紅寶石OpenSSL的問題
- 8. ||之間的區別a = b和a = a || b在紅寶石?
- 9. 內核#eval和Binding#eval之間的區別紅寶石
- 10. 使用openSSL的HMAC-MD5
- 11. 'mandrill-api'寶石和'mandrill_mailer'寶石之間的區別
- 12. 紅寶石寶石和紅寶石之間的體系結構不匹配?
- 13. 與紅寶石
- 14. Ruby Digest :: MD5.base64digest和PHP之間的不同結果base64_encode
- 15. Digest :: SHA2.hexdigest從相同的參數生成兩個完全不同的值
- 16. 區塊紅寶石
- 17. 紅寶石散列方法區別:[] VS:dig
- 18. 模塊中紅寶石1.8.7和1.9.1之間的區別是什麼?
- 19. 與紅寶石
- 20. 與紅寶石
- 21. 與紅寶石
- 22. OpenSSL中EVP_PKEY_RSA和EVP_PKEY_RSA2之間的區別?
- 23. 紅寶石Openssl的不NET :: HTTP
- 24. 運行之間的紅寶石C寶石內存污染
- 25. JavaScript和紅寶石整數之間的區別(使用左移位運算符)
- 26. clojure與紅寶石
- 27. MD4和MD5加密之間的區別
- 28. application.rb中覆蓋基礎紅寶石
- 29. 與紅寶石2.1.1
- 30. REST與紅寶石?