1,MD5加密的Java實現(xiàn)

 在各種應用系統(tǒng)中尤莺,如果需要設置賬戶旅敷,那么就會涉及到儲存用戶賬戶信息的問題,
為了保證所儲存賬戶信息的安全颤霎,通常會采用MD5加密的方式來媳谁,進行儲存。首先友酱,簡單得介紹一下晴音,
什么是MD5加密。

  MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法)缔杉,
在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest
開發(fā)出來锤躁,經(jīng)MD2、MD3和MD4發(fā)展而來或详。是讓大容量信息在用數(shù)字簽名軟件簽署私人密匙前被"壓縮"成一種保密的格式(就是把一個任意長度的
字節(jié)串變換成一定長的大整數(shù))系羞。不管是MD2、MD4還是MD5霸琴,它們都需要獲得一個隨機長度的
信息并產(chǎn)生一個128位的信息摘要座柱。雖然這些算法的結(jié)構(gòu)或多或少有些相似慕蔚,但MD2的設計與MD4
和MD5完全不同织阳,那是因為MD2是為8位機器做過設計優(yōu)化的踩晶,而MD4和MD5卻是面向32位的電腦。
這三個算法的描述和C語言源代碼在Internet RFCs 1321中有詳細的描述,這是一份最權(quán)威的文檔嗡善,
由Ronald L. Rivest在1992年8月向IETF提交辑莫。

(一)消息摘要簡介

一個消息摘要就是一個數(shù)據(jù)塊的數(shù)字指紋。即對一個任意長度的一個數(shù)據(jù)塊進行計算罩引,
產(chǎn)生一個唯一指痈鞫帧(對于SHA1是產(chǎn)生一個20字節(jié)的二進制數(shù)組)。消息摘要是一種與消息
認證碼結(jié)合使用以確保消息完整性的技術(shù)袁铐。主要使用單向散列函數(shù)算法揭蜒,可用于檢驗消息的
完整性,和通過散列密碼直接以文本形式保存等剔桨,目前廣泛使用的算法有MD4屉更、MD5、SHA-1洒缀。

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

兩個不同的報文難以生成相同的摘要

難以對指定的摘要生成一個報文瑰谜,而可以由該報文反推算出該指定的摘要

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

(二)對字符串進行加密

/**利用MD5進行加密

* @param str  待加密的字符串

* @return  加密后的字符串

* @throws NoSuchAlgorithmException  沒有這種產(chǎn)生消息摘要的算法

* @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;

}

    /**

     * 實際運用md5加密

     * @param str

     * @return

     */

    @RequestMapping("/MD5")

    public static String MD5(String str){

        if(StringUtils.isNullOrEmpty(str)){

            return  null;

        }else{

          return DigestUtils.md5Hex(str);

        }
    }

導入jar

  <!---算法加密-->
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
          <groupId>commons-codec</groupId>
         <artifactId>commons-codec</artifactId>
         <version>1.9</version>
</dependency>
調(diào)用函數(shù):

String str="909"

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

輸出:pDALACvPtx8pHawXXVLflA==
(三)驗證密碼是否正確

因為MD5是基于消息摘要原理的,消息摘要的基本特征就是很難根據(jù)摘要推算出消息報文树绩,
因此要驗證密碼是否正確萨脑,就必須對輸入密碼(消息報文)重新計算其摘要,和數(shù)據(jù)庫中
存儲的摘要進行對比(即數(shù)據(jù)庫中存儲的其實為用戶密碼的摘要)饺饭,若兩個摘要相同渤早,
則說明密碼正確,不同瘫俊,則說明密碼錯誤鹊杖。
/**判斷用戶密碼是否正確

* @param newpasswd  用戶輸入的密碼

* @param oldpasswd  數(shù)據(jù)庫中存儲的密碼--用戶密碼的摘要

* @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;

                                                     }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扛芽,隨后出現(xiàn)的幾起案子仅淑,更是在濱河造成了極大的恐慌,老刑警劉巖胸哥,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赡鲜,居然都是意外死亡空厌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門银酬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘲更,“玉大人,你說我怎么就攤上這事揩瞪「畴” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宠哄。 經(jīng)常有香客問我壹将,道長,這世上最難降的妖魔是什么毛嫉? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任诽俯,我火速辦了婚禮,結(jié)果婚禮上承粤,老公的妹妹穿的比我還像新娘暴区。我一直安慰自己,他們只是感情好辛臊,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布仙粱。 她就那樣靜靜地躺著,像睡著了一般彻舰。 火紅的嫁衣襯著肌膚如雪伐割。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天淹遵,我揣著相機與錄音口猜,去河邊找鬼。 笑死透揣,一個胖子當著我的面吹牛济炎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辐真,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼须尚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侍咱?” 一聲冷哼從身側(cè)響起耐床,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎楔脯,沒想到半個月后撩轰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡昧廷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年堪嫂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片木柬。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡皆串,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出眉枕,到底是詐尸還是另有隱情恶复,我是刑警寧澤怜森,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站谤牡,受9級特大地震影響副硅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拓哟,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一想许、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧断序,春花似錦流纹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诸迟,卻和暖如春茸炒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阵苇。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工壁公, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绅项。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓紊册,卻偏偏與公主長得像,于是被迫代替她去往敵國和親快耿。 傳聞我的和親對象是個殘疾皇子囊陡,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,098評論 1 32
  • 為了防止我們的數(shù)據(jù)泄露,我們往往會對數(shù)據(jù)進行加密撮竿,特別是敏感數(shù)據(jù)丁稀,我們要求的安全性更高。下面將介紹幾種常用的加密算...
    Chauncey_Chen閱讀 2,916評論 0 20
  • 懷著感恩的心倚聚,敬畏之心做事情 明天朋友結(jié)婚,現(xiàn)在去榮昌接親
    輕而易舉地富足閱讀 194評論 2 1
  • 一渠繞群山凿可,精神動天下惑折!十萬開山者授账,歷時十春秋,絕壁開山穿石惨驶,挖渠千里尋水白热,艱苦奮斗之紅旗精神,永遠插在太行之巔粗卜!
    凌薇言閱讀 321評論 2 15
  • 人生如棋屋确,落子無悔。 如果打破規(guī)則悔棋重新開始续扔,那么所有的一切都會失去意義攻臀!從一開始的謀篇布局,前面的每一子都沒...
    斜錯刀閱讀 160評論 0 0