<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)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲最大的成网4438| 一级女性全黄久久生活片免费| 亚洲一区免费观看| a毛片成人免费全部播放| 1000部禁片黄的免费看| 亚洲AV无码之日韩精品| 亚洲精品永久www忘忧草| 四虎影视在线看免费观看| 亚洲av无码天堂一区二区三区| 羞羞漫画页面免费入口欢迎你| 亚洲黄色免费网站| 亚洲电影国产一区| 国产亚洲日韩在线a不卡| 在线日本高清免费不卡| 亚洲午夜精品久久久久久浪潮| 亚洲国产美女精品久久| 亚洲免费人成在线视频观看| 在线观看免费亚洲| 亚洲国产精品成人精品软件| 国产精品色拉拉免费看| 亚洲AV无码一区二区三区系列| 黄网站色成年片大免费高清| 久久精品国产精品亚洲| 亚洲AV永久无码精品一福利| 韩国免费一级成人毛片| 老司机亚洲精品影院无码| 国产精彩免费视频| 亚洲日韩av无码中文| 57pao国产成永久免费视频| 亚洲精品456在线播放| 免费看又爽又黄禁片视频1000| 亚洲综合自拍成人| 免费无码又爽又刺激毛片| 成人在线免费视频| 老色鬼久久亚洲AV综合| 手机在线毛片免费播放| 亚洲日产乱码一二三区别| 久久久久久A亚洲欧洲AV冫| 精品国产免费人成电影在线观看| 亚洲第一中文字幕| 免费在线观看亚洲|