<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    David.Turing's blog

     

    計算HMAC

    Message Authentication Code (MAC) 是用于確信信息在傳輸過程中沒有被修改過,體現了信息完整性, MAC 有很多種算法,大部分算法用于簡單的場景(如文件傳輸),他們都有效,但如果用于都未曾考慮會被惡意攻擊的情況,在密碼學領域中,更多被應用的是 HMAC HMAC 更安全,因為它是基于 Key 的。 HMAC 是使用諸如 MD5,SHA-1 等散列算法構造 MAC

    HMAC 在這樣一種場景中被應用:

    巴赫爾、穆罕默德是為伊拉克臨時政府中不同的伊斯蘭派系,由于美國已經在伊拉克設置了大量情報機構,他們擔心政府部內部文件在網絡傳輸可能被美國情報局修改,考慮起見,巴赫爾、穆罕默德決定使用 MAC 技術:

    1,? 他們商榷一個簡單的密鑰 Key1

    2,? 他們商榷一種可靠的 HMAC 算法,如 HMACSHA1

    3,? 他們每次發(fā)送政府審批報告前,都用 HMACSHA1 進行計算,并將該 hmac x1 附帶發(fā)送給對方

    4,? 對方接收到文件,將文件進行一次 HMAC 的計算,得出新的 hmac x2 ,對比 x1 x2 ,可以知道文件是否在中途被修改過。

    注意,上述的步驟如果不考慮惡意攻擊者,可以使用消息摘要,惡意攻擊者可以修改你的文件,然后重新幫你計算摘要,最后替換你的摘要:(

    ?????? 關于 HMAC 的更多標準,可以參考 RFC2104

    package ?org.dev2dev.security.test.mac;

    import ?java.io.File;
    import ?java.io.IOException;
    import ?java.security.InvalidKeyException;
    import ?java.security.NoSuchAlgorithmException;

    import ?javax.crypto.KeyGenerator;
    import ?javax.crypto.Mac;
    import ?javax.crypto.SecretKey;

    import ?org.dev2dev.common.FileUtils;

    public ? class ?TestHmac {

    ?
    /**
    ??*?
    @param ?args
    ??
    */

    ?
    public ? static ? void ?main(String[]?args)? {
    ?????
    try ? {
    ?????????
    // 首先需要生成Hmac的key,有比較多種方法,HmacSHA1,算法類型可以參考KeyGenerator算法列表?
    ??????????????// 本例子用KeyGenerator生成key,實際上,key可以保存起來,也可以被分發(fā)給其他人
    ?????????KeyGenerator?keyGen?=?KeyGenerator.getInstance("HmacMD5");?
    ?????????SecretKey?key?=?keyGen.generateKey();
    ?????????Mac?mac?
    =?Mac.getInstance(key.getAlgorithm());
    ?????????mac.init(key);
    ?????????????
    ?????????File?infile
    =new?File("c:\\1.txt");
    ?????????
    byte[]?inputbyte=null;
    ???
    try?{
    ????inputbyte?
    =?FileUtils.getBytesFromFile(infile);
    ???}
    ?catch?(IOException?e)?{
    ????e.printStackTrace();
    ???}

    ?????????
    byte[]?digest?=?mac.doFinal(inputbyte);
    ?????
    ?????????
    //?If?desired,?convert?the?digest?into?a?string
    ?????????String?HmacB64?=?new?sun.misc.BASE64Encoder().encode(digest);
    ?????????System.out.println(
    "計算的HMAC ="+ HmacB64);
    ?????}
    ? catch ?(InvalidKeyException?e)? {
    ??????e.printStackTrace();
    ?????}
    ? catch ?(NoSuchAlgorithmException?e)? {
    ??????e.printStackTrace();
    ?????}
    ?

    ?}


    }

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

    導航

    統(tǒng)計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人毛片手机版免费看| 亚洲国产精品一区二区三区在线观看 | 亚洲欧美成人综合久久久| 8x8×在线永久免费视频| 久久久久久亚洲精品| 精品视频一区二区三区免费| 亚洲精品成人无限看| 国产三级在线免费| 亚洲国产高清视频| 91大神免费观看| 亚洲人成电影网站| 成人人免费夜夜视频观看| 亚洲精品无码av片| 免费日韩在线视频| 2022免费国产精品福利在线 | 亚洲人成77777在线播放网站| jizz日本免费| 亚洲一区二区中文| 成人黄色免费网站| 亚洲.国产.欧美一区二区三区| 午夜国产大片免费观看| 国产精品无码免费专区午夜| 久久亚洲AV午夜福利精品一区| 亚洲视频免费观看| 亚洲av永久无码天堂网| 亚洲精品乱码久久久久久蜜桃 | 又大又硬又爽免费视频| 三年在线观看免费观看完整版中文| 久久噜噜噜久久亚洲va久| 国产在线jyzzjyzz免费麻豆| 亚洲AV无码专区在线电影成人 | 亚洲精品视频久久久| 黄色片免费在线观看| 亚洲一区二区三区高清视频| 又大又粗又爽a级毛片免费看| av永久免费网站在线观看| 亚洲一区动漫卡通在线播放| 免费一级毛片清高播放| 免费国产午夜高清在线视频| 亚洲午夜无码久久| 亚洲精品高清国产一线久久|