HMAC的通俗解釋及應用


參考鏈接:https://www.zhihu.com/question/19816240
參考鏈接:https://www.cnblogs.com/shoshana-kong/p/11497676.html

1.可以驗證對端用戶的合法性

HMAC算法的典型應用

HMAC算法的一個典型應用是用在“挑戰/響應”(Challenge/Response)身份認證中,認證流程如下:

(1) 先由客戶端向服務器發出一個驗證請求。

(2) 服務器接到此請求后生成一個隨機數並通過網絡傳輸給客戶端(此為挑戰)。

(3) 客戶端將收到的隨機數與自己的密鑰進行HMAC-SHA1運算並得到一個結果作為認證證據傳給服務器(此為響應)。

(4) 與此同時,服務器也使用該隨機數與存儲在服務器數據庫中的該客戶密鑰進行HMAC-SHA1運算,如果服務器的運算結果與客戶端傳回的響應結果相同,則認為客戶端是一個合法用戶 。
2.發消息給對方(或從對方接收消息)

比如你和對方共享了一個密鑰K,現在你要發消息給對方,既要保證消息沒有被篡改(完整性),又要能證明信息確實是你本人發的(源認證),那么就把原信息和密鑰K經HMAC計算的值一起發過去。對方接到之后,使用自己手中的密鑰K和原消息計算一下HMAC的值,如果和你發送的HMAC一致,那么可以認為這個消息既沒有被篡改也沒有冒充。

作者:turing
鏈接:https://www.zhihu.com/question/19816240/answer/67735196
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
3.MD5普通散列算法和HMAC-MD5的區別

MD5就是通過散列對要輸出的數據進行摘要,接收到數據時,再同樣進行MD5散列,與給定的MD5散列值比較,一致不一致就很清楚了。

通常來說,傳輸的數據和MD5是不同的渠道給出的,比如網頁上顯示MD5,下載鏈接是某個鏡像網站的。

如果要通過同一個渠道發送數據和散列值的話(比如消息認證碼),就要考慮數據和MD5同時被篡改的問題,如果第三方修改了數據,然后進行MD5散列,並一塊發給接收方,接收方並不能察覺到數據被篡改。

HMAC-MD5就可以用一把發送方和接收方都有的key進行計算,而沒有這把key的第三方是無法計算出正確的散列值的,這樣就可以防止數據被篡改。

作者:用心閣
鏈接:https://www.zhihu.com/question/19816240/answer/67698172
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM