詳解Node.js API系列 Crypto加密模塊(2) Hmac

簡介

隨着互聯網的發展,MD5已經變得越來越不安全了,黑客可以通過彩虹表,查出MD5值所對應的密碼,爲了解決這個問題,很多網站都開始採用需要密鑰加密的Hmac算法。

Hmac算法

HMAC是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC運算利用哈希算法,以一個密鑰和一個消息爲輸入,生成一個消息摘要作爲輸出。

認證流程

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

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

(3) 客戶端將收到的隨機數提供給ePass,由ePass使用該隨機數與存儲在ePass中的密鑰進行HMAC-MD5運算並得到一個結果作爲認證證據傳給服務器(此爲響應)。

(4) 與此同時,服務器也使用該隨機數與存儲在服務器數據庫中的該客戶密鑰進行HMAC-MD5運算,如果服務器的運算結果與客戶端傳回的響應結果相同,則認爲客戶端是一個合法用戶

BAE加密驗證

bae的PHP代碼簽名參考

Signture = urlencode(base64_encode(hash_hmac('sha1', Content, SecretKey,true)))
  • SecretKey 加密的要是
  • Content 傳輸的內容
  • sha1生成的算法

Node.js版本的

Signture = require('crypto').createHmac('sha1', SecrectKey).
        update(content).digest().toString('base64');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章