<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,? 他們每次發送政府審批報告前,都用 HMACSHA1 進行計算,并將該 hmac x1 附帶發送給對方

    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可以保存起來,也可以被分發給其他人
    ?????????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 閱讀(1592) 評論(1)  編輯  收藏 所屬分類: BounyCastle&JCE

    導航

    統計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成a人片在线观看无码专区| 国产伦精品一区二区三区免费迷| 亚洲成A人片在线观看中文| 亚洲中文字幕久久精品无码A | 毛片基地免费视频a| 亚洲午夜久久久久久尤物| 2019中文字幕免费电影在线播放| 亚洲人成网址在线观看| 免费无遮挡无码永久视频 | 免费国产在线观看不卡| 深夜a级毛片免费视频| 久久国产成人精品国产成人亚洲| 一区二区三区AV高清免费波多| 中文字幕亚洲不卡在线亚瑟| 国产无遮挡又黄又爽免费网站| 久久亚洲国产精品一区二区| 99久久精品国产免费| 国产成人精品日本亚洲直接 | 免费看美女裸露无档网站| 亚洲男人天堂2018av| 日韩免费一级毛片| 亚洲精品偷拍视频免费观看| 亚洲欧洲美洲无码精品VA| 免费A级毛片无码专区| 精品亚洲成A人无码成A在线观看| 午夜毛片不卡高清免费| 一级毛片aa高清免费观看| 亚洲AV日韩AV天堂久久| 在线视频精品免费| 国产产在线精品亚洲AAVV| 亚洲线精品一区二区三区影音先锋| 91短视频在线免费观看| 亚洲综合av一区二区三区| 亚洲综合色在线观看亚洲| 91成人免费观看| 苍井空亚洲精品AA片在线播放 | 四虎在线播放免费永久视频| 嫩草影院在线播放www免费观看| 亚洲中文无码a∨在线观看| 国产极品美女高潮抽搐免费网站| 99视频在线观看免费|