1. gzyueqian
      18529173453

      java中使用MD5加密算法進(jìn)行加密

      更新時(shí)間: 2007-06-04 09:58:37來(lái)源: 粵嵌教育瀏覽量:837


        在各種應(yīng)用系統(tǒng)的開發(fā)中,經(jīng)常需要存儲(chǔ)用戶信息,很多地方都要存儲(chǔ)用戶密碼,而將用戶密碼直接存儲(chǔ)在服務(wù)器上顯然是不安全的,本文簡(jiǎn)要介紹工作中常用的 MD5加密算法,希望能拋磚引玉。

        (一)消息摘要簡(jiǎn)介

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

        消息摘要有兩個(gè)基本屬性:

        兩個(gè)不同的報(bào)文難以生成相同的摘要難以對(duì)指定的摘要生成一個(gè)報(bào)文,而可以由該報(bào)文反推算出該指定的摘要代表:美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所的SHA1和麻省理工學(xué)院Ronald Rivest提出的MD5

        (二)對(duì)字符串進(jìn)行加密

      /** *//**利用MD5進(jìn)行加密
      * @param str 待加密的字符串
      * @return 加密后的字符串
      * @throws NoSuchAlgorithmException 沒(méi)有這種產(chǎn)生消息摘要的算法
      * @throws UnsupportedEncodingException
      */
      public String EncoderByMd5(String str) throws NoSuchAlgorithmException,
      UnsupportedEncodingException...{
      //確定計(jì)算方法
      MessageDigest md5=MessageDigest.getInstance("MD5");
      BASE64Encoder base64en = new BASE64Encoder();
      //加密后的字符串
      String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
      return newstr;
      }
      調(diào)用函數(shù):String str="0123456789"

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

      輸出:eB5eJF1ptWaXm4bijSPyxw==

        (三)驗(yàn)證密碼是否正確

        因?yàn)镸D5是基于消息摘要原理的,消息摘要的基本特征就是很難根據(jù)摘要推算出消息報(bào)文,因此要驗(yàn)證密碼是否正確,就必須對(duì)輸入密碼(消息報(bào)文)重新計(jì)算其摘要,和數(shù)據(jù)庫(kù)中存儲(chǔ)的摘要進(jìn)行對(duì)比(即數(shù)據(jù)庫(kù)中存儲(chǔ)的其實(shí)為用戶密碼的摘要),若兩個(gè)摘要相同,則說(shuō)明密碼正確,不同,則說(shuō)明密碼錯(cuò)誤。

      /** *//**判斷用戶密碼是否正確
      * @param newpasswd 用戶輸入的密碼
      * @param oldpasswd 數(shù)據(jù)庫(kù)中存儲(chǔ)的密碼--用戶密碼的摘要
      * @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;
      }

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 色婷婷综合久久久久中文一区二区 | 亚洲综合天堂Av网站在线观看 | 亚洲1级欧美高清 | 日本免费自拍视频网站 | 五十路熟中文字幕 | 日本强伦姧护士在线播放 |