計(jì)算HMAC
Message Authentication Code (MAC) 是用于確信信息在傳輸過程中沒有被修改過,體現(xiàn)了信息完整性, MAC 有很多種算法,大部分算法用于簡單的場景(如文件傳輸),他們都有效,但如果用于都未曾考慮會(huì)被惡意攻擊的情況,在密碼學(xué)領(lǐng)域中,更多被應(yīng)用的是 HMAC , HMAC 更安全,因?yàn)樗腔?/span> Key 的。 HMAC 是使用諸如 MD5,SHA-1 等散列算法構(gòu)造 MAC 。
HMAC 在這樣一種場景中被應(yīng)用:
巴赫爾、穆罕默德是為伊拉克臨時(shí)政府中不同的伊斯蘭派系,由于美國已經(jīng)在伊拉克設(shè)置了大量情報(bào)機(jī)構(gòu),他們擔(dān)心政府部內(nèi)部文件在網(wǎng)絡(luò)傳輸可能被美國情報(bào)局修改,考慮起見,巴赫爾、穆罕默德決定使用 MAC 技術(shù):
1,? 他們商榷一個(gè)簡單的密鑰 Key1
2,? 他們商榷一種可靠的 HMAC 算法,如 HMACSHA1
3,? 他們每次發(fā)送政府審批報(bào)告前,都用 HMACSHA1 進(jìn)行計(jì)算,并將該 hmac 值 x1 附帶發(fā)送給對(duì)方
4,? 對(duì)方接收到文件,將文件進(jìn)行一次 HMAC 的計(jì)算,得出新的 hmac 值 x2 ,對(duì)比 x1 和 x2 ,可以知道文件是否在中途被修改過。
注意,上述的步驟如果不考慮惡意攻擊者,可以使用消息摘要,惡意攻擊者可以修改你的文件,然后重新幫你計(jì)算摘要,最后替換你的摘要:(
?????? 關(guān)于 HMAC 的更多標(biāo)準(zhǔn),可以參考 RFC2104 。




























??????????????// 本例子用KeyGenerator生成key,實(shí)際上,key可以保存起來,也可以被分發(fā)給其他人



































posted on 2006-05-21 17:05 david.turing 閱讀(1589) 評(píng)論(1) 編輯 收藏 所屬分類: BounyCastle&JCE