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

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

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

    即興的靈感

    思維是一種藝術; 藝術需要靈感。

    博客好友

    最新評論

    信息摘要算法實現之MD5算法

    ???在計算機安全領域,涉及到一個重要的范疇,那就是加密解密技術,加密解密技術的發(fā)展,為計算機安全提供了很大的保障,同時也隨著破解技術的蔓延,對計算機安全帶來了挑戰(zhàn),本文將個人之前對加密解密算法MD5的了解跟使用做個總結。
    ???在計算機加密算法當中,主要存在對稱密鑰體制、非對稱密鑰體制公鑰體系、消息摘要、以及數字簽名等大類型的算法。其中消息摘要有兩個主要算法,下文作簡要介紹消息摘要中的MD5算法以及對MD5算法的使用。
    ???在介紹MD5算法之前,先介紹下哈希函數。哈希函數(HASH)的運算原理為:任意輸入一個任何長度的任何字符串,通過哈希函數運算之后返回一串固定長度的字符串,該字符串即稱為HASH值,用于計算哈希值的單向HASH函數將用于產生目標信息摘要。使用HASH函數主要可以解決兩個問題:第一,我們無法從經過哈希函數產生的哈希值反向計算出運算前的信息原文;第二,無法查找兩個經HASH操作后生成相同HASH值的不同原文。因此利用哈希函數,在數字簽名中就可以解決驗證簽名和用戶身份驗證、不可抵賴性的問題。?
    ???由于信息摘要能簡要地描述了一份較長的信息或文件,因此信息摘要被稱為“數字指紋”。對于某一個文件原文,產生的信息摘要是唯一的。同時,也由于我們無法逆向計算出原文,信息摘要也就不怕被公開,即使公開,也無法得到原文信息。
    ????MD2,MD4和MD5算法就是一種被廣泛使用的HASH函數,是由Ron Rivest 設計的專門用于加密處理的單散列函數,通過MD5算法運算之后將產生一個128位(16字節(jié))的信息摘要,除非使用暴力破解,沒能找到其他好的方法,而一般計算機運算能力暴力破解時間一般需要一千多年之久,因此MD5算法是一種優(yōu)秀的加密算法。
    ???以下是有關MD5算法的實現過程代碼分析。

    import java.security.MessageDigest;

    public class MyMD5? {

    ??? public MyMD5() {
    ??? }

    ??? /**
    ???? *???計算一字符串MD5信息摘要
    ???? *? ?@返回一個信息摘要
    ???? */
    ??? public static? String computeMD5(String inputStr) {

    ??????? MessageDigest md5=null;
    ??????? try {
    ????????? ??//創(chuàng)建MD5函數對象
    ??????????? md5 = MessageDigest.getInstance("MD5");
    ??????? } catch (Exception e) {
    ??????????? System.out.println(e.toString());
    ??????????? e.printStackTrace();
    ??????????? return "";
    ??????? }
    ??????? char[] charArray = inputStr.toCharArray(); //將字符串轉換為字符數組
    ??????? byte[] byteArray = new byte[charArray.length]; //創(chuàng)建字節(jié)數組

    ??????? for (int i = 0; i < charArray.length; i++)
    ??????? //將字符轉換為字節(jié)
    ???????? byteArray[i] = (byte) charArray[i];

    ??????? //將得到的字節(jié)數組進行MD5運算
    ?????????byte[] md5Bytes = md5.digest(byteArray);

    ??????? StringBuffer reMD5Str= new StringBuffer();

    ??????? for (int i = 0; i < md5Bytes.length; i++) ...{
    ??????????? int val = ((int) md5Bytes[i]) & 0xff;
    ??????????? if (val < 16)
    ??????????????? hexValue.append("0");
    ??????????? hexValue.append(Integer.toHexString(val));
    ??????? }

    ?????? //返回信息摘要結果字符串
    ??????? return reMD5Str.toString();
    ??? }
    }

    ???以上即是有關JAVA加密算法中的信息摘要算法MD5的一些介紹跟使用與源碼。

    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調華麗/簡單生活/完美人生

    posted on 2008-12-04 23:28 poetguo 閱讀(3452) 評論(2)  編輯  收藏 所屬分類: 算法Algorithm JAVA

    評論

    # re: 信息摘要算法實現之MD5算法[未登錄] 2008-12-05 09:00 Matthew Chen

    char[] charArray = inputStr.toCharArray(); //將字符串轉換為字符數組
    不大好,考慮到string編碼方式還是用inputStr.getbytes()這類的方法好,如果加上編碼方式,還原的時候用上就是了。  回復  更多評論   

    # re: 信息摘要算法實現之MD5算法 2008-12-05 11:06 即興詩人

    使用String的getBytes方法確比toCharArray好,感謝留言指出!@Matthew Chen
      回復  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 男女啪啪免费体验区| 亚洲色欲色欲www| 一级做a爰性色毛片免费| 在线免费不卡视频| 亚洲乱理伦片在线观看中字| 精品免费人成视频app| 久久亚洲AV成人无码| 最近免费2019中文字幕大全| 亚洲高清无在码在线无弹窗| 1000部无遮挡拍拍拍免费视频观看| 亚洲AV电影院在线观看| 久久久久国色av免费看| 亚洲精品成人图区| 成人免费视频网址| 亚洲av成人片在线观看| 免费a在线观看播放| 皇色在线免费视频| 亚洲av午夜福利精品一区| 久久青草免费91线频观看不卡| 午夜亚洲AV日韩AV无码大全| 67pao强力打造国产免费| 亚洲国产激情在线一区| 国产精品酒店视频免费看| 视频免费1区二区三区| 亚洲无人区午夜福利码高清完整版| 精品免费tv久久久久久久| 亚洲精品自在线拍| 青青青青青青久久久免费观看| 免费国产a理论片| 亚洲va在线va天堂va888www| 97在线观看永久免费视频| 国产AV无码专区亚洲AV蜜芽| 亚洲中久无码不卡永久在线观看| 久久免费国产视频| 亚洲精品第一国产综合亚AV| 亚洲精品视频久久久| 1000部拍拍拍18勿入免费视频下载 | 亚洲视频中文字幕| 免费观看a级毛片| 岛国岛国免费V片在线观看| 亚洲啪啪免费视频|