2016-09-17 64 views
0

Im讀取XMPP認證流程中的內容。我知道,客戶端使用一種類似於此的算法來計算響應。XMPP DIGEST-md5計算響應的算法

  1. 創建一個形式爲「username:realm:password」的字符串。調用該字符串X.
  2. 計算X的16個八位字節MD5哈希值。調用結果Y.
  3. 創建形式爲「Y:nonce:cnonce:authzid」的字符串。調用這個字符串A1。
  4. 創建一個形式爲「AUTHENTICATE:digest-uri」的字符串。調用這個字符串A2。
  5. 計算A1的32位十六進制數字MD5哈希值。調用結果HA1。
  6. 計算A2的32位十六進制數字MD5散列。調用結果HA2。
  7. 創建一個格式爲「HA1:nonce:nc:cnonce:qop:HA2」的字符串。調用這個字符串KD。
  8. 計算KD的32位十六進制MD5哈希值。調用結果Z.

並將其嵌入到結構的響應字段中。

解碼質詢響應的一個例子是

username="rob",realm="cataclysm.cx",nonce="OA6MG9tEQGm2hh",cnonce="OA6MHXh6VqTrRk",nc=00000001,qop=auth,digesturi="xmpp/cataclysm.cx",response=d388dad90d4bbd760a152321f2143af7,charset=utf-8,authzid="[email protected]/myResource" 

但我關心的是,我還沒有看到任何地方如何在此響應字段在服務器上使用?有沒有真正使用它的用例?有人可以引用參考文獻/見解/實現如何使用響應字段以及它如何在確定用戶的真實性方面發揮作用。

謝謝!

回答

0

目前我正在研究Digest MD5認證機制,並且我使用RFC 2831作爲參考,並且回答您的問題是服務器在服務器的站點再次生成該響應,然後將其與從客戶端接收到的響應字段進行比較如果他們匹配的客戶端得到認證,否則認證失敗。

現在爲什麼這樣的比較發生的原因是,一旦一個字符串被散列所以服務器計算哈希值,它不能被逆轉到源字符串,如果提供的源字符串是相同的

如果這些值將等於我回答沒有澄清你的疑惑讓我知道