java中使用MD5進行計算摘要

來源:互聯網
上載者:User
java中使用MD5進行加密

    在各種應用系統的開發中,經常需要儲存使用者資訊,很多地方都要儲存使用者密碼,而將使用者密碼直接儲存在伺服器上顯然是不安全的,本文簡要介紹工作中常用的 MD5密碼編譯演算法,希望能拋磚引玉。
(一)訊息摘要簡介
    一個訊息摘要就是一個資料區塊的數位指紋。即對一個任意長度的一個資料區塊進行計算,產生一個唯一指印(對於SHA1是產生一個20位元組的位元組)。訊息摘要是一種與訊息認證碼結合使用以確保訊息完整性的技術。主要使用單向散列函數演算法,可用於檢驗訊息的完整性,和通過散列密碼直接以文本形式儲存等,目前廣泛使用的演算法有MD4、MD5、SHA-1。

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

  1. 兩個不同的報文難以產生相同的摘要
  2. 難以對指定的摘要產生一個報文,而可以由該報文反推算出該指定的摘要

代表:美國國家標準技術研究所的SHA1和麻省理工學院Ronald Rivest提出的MD5

(二)對字串進行加密    /** *//**利用MD5進行加密
     * @param str  待加密的字串
     * @return  加密後的字串
     * @throws NoSuchAlgorithmException  沒有這種產生訊息摘要的演算法
     * @throws UnsupportedEncodingException  
     */
    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是基於訊息摘要原理的,訊息摘要的基本特徵就是很難根據摘要推算出訊息報文,因此要驗證密碼是否正確,就必須對輸入密碼(訊息報文)重新計算其摘要,和資料庫中儲存的摘要進行對比(即資料庫中儲存的其實為使用者密碼的摘要),若兩個摘要相同,則說明密碼正確,不同,則說明密碼錯誤。

    /** *//**判斷使用者密碼是否正確
     * @param newpasswd  使用者輸入的密碼
     * @param oldpasswd  資料庫中儲存的密碼--使用者密碼的摘要
     * @return
     * @throws NoSuchAlgorithmException
     * @throws UnsupportedEncodingException
     */
    public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
        if(EncoderByMd5(newpasswd).equals(oldpasswd))
            return true;
        else
            return false;
    }

參考資料
java上密碼編譯演算法的實現用例
java加密和數位簽章編程快速入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.