scram-sha1
生活随笔
收集整理的這篇文章主要介紹了
scram-sha1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. scram-sha1 鑒權機制說明
1.2. 鑒權交互流程
1.2.1. 初始化
服務端使用一個salt和一個iteration-count,對password進行加鹽哈希(使用H表示哈希函數,這里就是SHA1,iteration-count就是哈希迭代次數),得到一個password[s]:
_password[s] = H(password, salt, iteration-count)_服務端拿這個password[s]分別和字符串『Client Key』和『Server Key』進行計算HMAC摘要,得到一個key[c]和一個key[s]:
_key[c] = HMAC(password[s], "Client Key")__key[s] = HMAC(password[s], "Server Key")_1.2.2. 一次認證
步驟一:
步驟二:
步驟三:
客戶端響應一個proof(證明數據)和合并字符串。
響應的 proof數據根據服務所給的隨機參數以及客戶端密鑰生成,是一個客戶端簽名與密鑰異或計算后的結果。
_Auth = client-first-message, server-first-message, client-final-message(without proof[c])_然后使用從服務端獲取的salt和iteration-count,根據已知的password計算出加鹽哈希password[s],然后根據password[s]得到key[c],再拿這個key[c]和Auth變量經過如下計算得到:_proof[c] = key[c] XOR HMAC(H(key[c]), Auth)_步驟四:
服務端使用其保存的H(key[c])和Auth計算HMAC摘要,再和proof[c]進行異或,得出key[c],再對這個key[c]進行哈希,和其保存的H(key[c])進行比較是否一致。如果一致,則客戶端的認證通過,服務端接下來會構造一個proof[s]用來向客戶端證明自己是服務端
_proof[s] = HMAC(key[s], Auth)_步驟五:
總結
以上是生活随笔為你收集整理的scram-sha1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序使用组件实现移动端软键盘
- 下一篇: DX11 游戏开发笔记 (二) DX11