<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ā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产美女a做受大片免费| 亚洲一区二区三区在线视频| 久久亚洲中文字幕无码| 国产亚洲美女精品久久久| 暖暖免费在线中文日本| 亚洲综合色婷婷在线观看| 国产亚洲老熟女视频| 免费99精品国产自在现线| 黄网站色视频免费看无下截| 亚洲成人在线网站| 波多野结衣免费视频观看| 久久免费观看国产99精品| 亚洲av日韩精品久久久久久a| 亚洲av中文无码乱人伦在线咪咕| 大学生一级特黄的免费大片视频| 国产一级a毛一级a看免费人娇| 77777亚洲午夜久久多喷| 丁香五月亚洲综合深深爱| 无码一区二区三区免费视频| 99免费精品视频| 亚洲国产成人AV在线播放| 中文字幕亚洲色图| 老司机亚洲精品影视www| 在线观看成人免费视频| 99久久精品免费精品国产| 一区二区免费电影| 水蜜桃视频在线观看免费播放高清| 亚洲精品成人图区| 国产亚洲成人久久| 性做久久久久免费看| 中文字幕免费在线观看| 一级特黄录像免费播放肥| 亚洲AV无码国产精品永久一区| 亚洲第一精品电影网| 亚洲日韩一页精品发布| 免费无码又爽又高潮视频| 亚洲日本在线免费观看| 182tv免费视频在线观看| 无码AV动漫精品一区二区免费| 亚洲欧美日韩中文字幕在线一区| 亚洲福利视频网址|