Hash1(username:realm:password)中包含的是用戶名和密碼的MD5哈希值,其中的“rea1m”可以是服務(wù)器端提供的任意字符串,而用戶名和密碼則由客戶端輸入。
Hash2(method:digestURI)中包含的是請求方法和摘要地址的MD5哈希值,請求方法(method)可以是GET或POST,具體需要根據(jù)頁面所使用的請求方法來確定,而摘要地址(digestURI)則是發(fā)送請求的頁面地址。
response(hash1:nounce:hash2)中的值是最后需要發(fā)送給服務(wù)器端的字符串,其中包含的是剛才生成的hash1和hash2,以及一個(gè)任意字符串nonce,這個(gè)nonce字符串由服務(wù)器端發(fā)送給客戶端,且只能使用一次(相當(dāng)于一次性驗(yàn)證碼)。
RFC 2617摘要訪問認(rèn)證
RFC 2617摘要認(rèn)證同樣使用了MD5哈希算法,但是最終哈希值的生成還需要涉及到一些額外的參數(shù)。RFC2617的請求語句如下所示:
Hash1=MD5(username:realm:password)Hash2=MD5(method:digestURI)response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
與之前一樣,Hash1(username:realm:password)中包含的是用戶名和密碼的MD5哈希值,其中的“rea1m”可以是服務(wù)器端提供的任意字符串,而用戶名和密碼則由客戶端輸入。
Hash2(method:digestURI)中包含的是請求方法和摘要地址的MD5哈希值,請求方法(method)可以是GET或POST,具體需要根據(jù)頁面所使用的請求方法來確定,而摘要地址(digestURI)則是發(fā)送請求的頁面地址。
response((Hash1:nonce:nonceCount:cnonce:qop:Hash2)中的值是最后需要發(fā)送給服務(wù)器端的字符串,其中包含的是剛才生成的hash1和hash2以及一些額外參數(shù)。如果你想了解這些額外參數(shù)的話,可以參考微軟發(fā)布的這篇技術(shù)文章【 點(diǎn)我點(diǎn)我 】。