簡介
隨着互聯網的發展,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');