已遷址

          已遷址http://www.cnblogs.com/live365wang/

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 0 文章 :: 1 評論 :: 0 Trackbacks

          本文轉自:http://school.cfan.com.cn/pro/java/2007-06-11/1181531460d67777.shtml

           

          在各種應用系統的開發中,經常需要存儲用戶信息,很多地方都要存儲用戶密碼,而將用戶密碼直接存儲在服務器上顯然是不安全的,本文簡要介紹工作中常用的 MD5加密算法,希望能拋磚引玉。

          (一)消息摘要簡介

              一個消息摘要就是一個數據塊的數字指紋。即對一個任意長度的一個數據塊進行計算,產生一個唯一指印(對于SHA1是產生一個20字節的二進制數組)。消息摘要是一種與消息認證碼結合使用以確保消息完整性的技術。主要使用單向散列函數算法,可用于檢驗消息的完整性,和通過散列密碼直接以文本形式保存等,目前廣泛使用的算法有MD4、MD5、SHA-1.

              消息摘要有兩個基本屬性:

              兩個不同的報文難以生成相同的摘要難以對指定的摘要生成一個報文,而可以由該報文反推算出該指定的摘要代表:美國國家標準技術研究所的SHA1和麻省理工學院Ronald Rivest提出的MD5

          (二)對字符串進行加密


           public String EncoderByMd5(String str) throws NoSuchAlgorithmException,

          UnsupportedEncodingException{
           //確定計算方法
                   MessageDigest md5=MessageDigest.getInstance("MD5");
                   BASE64Encoder base64en = new BASE64Encoder();
           //加密后的字符串
                   String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
           return newstr;
           }

              調用函數:String str="0123456789"

               System.out.println(EncoderByMd5(str));

              輸出:eB5eJF1ptWaXm4bijSPyxw==

          (三)驗證密碼是否正確

              因為MD5是基于消息摘要原理的,消息摘要的基本特征就是很難根據摘要推算出消息報文,因此要驗證密碼是否正確,就必須對輸入密碼(消息報文)重新計算其摘要,和數據庫中存儲的摘要進行對比(即數據庫中存儲的其實為用戶密碼的摘要),若兩個摘要相同,則說明密碼正確,不同,則說明密碼錯誤。


           public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException,

          UnsupportedEncodingException{
           if(EncoderByMd5(newpasswd).equals(oldpasswd))
           return true;
           else
           return false;
           }

          posted on 2011-02-22 13:42 已遷址 閱讀(105) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 垦利县| 外汇| 海伦市| 曲周县| 苍南县| 洞头县| 玛沁县| 惠来县| 行唐县| 隆安县| 垣曲县| 寿宁县| 工布江达县| 鄂托克前旗| 邳州市| 津市市| 沙坪坝区| 霍城县| 富蕴县| 敦化市| 宜春市| 河南省| 滁州市| 华安县| 方正县| 临汾市| 湟源县| 泾源县| 绥德县| 罗山县| 哈尔滨市| 滨海县| 黄平县| 商水县| 浮梁县| 洛南县| 齐齐哈尔市| 佛坪县| 东辽县| 宜城市| 曲水县|