posts - 35,  comments - 8,  trackbacks - 0

          J2SE在java.security.MessageDigest提供了一個MD5、SHA摘要計算類。
          結(jié)合javascript的md5計算,可以實現(xiàn)前臺口令加密,后臺數(shù)據(jù)庫中也保存的是md5或者sha的密碼加密摘要。

          具體實現(xiàn)如下:
          1、login.jsp部分
          ...
          <script type="text/javascript" src='js/md5.js'>

          </script>

          <html:form action="/login" focus="userid" >

          <table class="SubFormStyle">
             <tr align=left>
              <td><bean:message key="caption.LOGIN.UserID" /> <html:text
               property="userid" value=""></html:text></td>
              <td><bean:message key="caption.LOGIN.Password" /> <html:password
               property="passwordinput" value=""></html:password>
               <html:hidden
               property="password" value="" ></html:hidden></td>
              <td><html:submit onclick="password.value = hex_md5(passwordinput.value);">
               <bean:message key="button.Login" />
              </html:submit></td>

             </tr>
          </table>
          </html:form>
          ...

          2、我用的是struts,具體的action和form就不再浪費紙張了,我定義了一個loginuser的類來進(jìn)行用戶密碼校驗,這里只給出校驗的方法:
          /**
            *
            * 校驗密碼,密碼采用MD5算法加密。
            *
            * @Param PasswordInput, 待校驗密碼
            * @Return 校驗通過返回true,否則返回false
            *
            *
            */
           public boolean CheckPassword(String PasswordInput) throws ATError {

            this.select();//從數(shù)據(jù)庫中讀取用戶信息
            MessageDigest md;
            try {
             //生成一個MD5加密計算摘要
             md = MessageDigest.getInstance("MD5");

             //計算md5函數(shù)
             md.update(this.password.getBytes());
             //digest()最后確定返回md5 hash值,返回值為8為字符串。因為md5 hash值是16位的hex值,實際上就是8位的字符
             //BigInteger函數(shù)則將8位的字符串轉(zhuǎn)換成16位hex值,用字符串來表示;得到字符串形式的hash值
             String pwd = new BigInteger(1, md.digest()).toString(16);
             
             if (PasswordInput.equals(pwd)) {
              return true;
             } else {
              return false;
             }
            } catch (NoSuchAlgorithmException e) {
            
             throw new ATError(e, "LoginUser", "CheckPassword", 1000);
            }

           }


          md5.js下載:http://pajhome.org.uk/crypt/md5/index.html

          posted on 2006-01-19 09:13 J2EE 閱讀(4284) 評論(3)  編輯  收藏

          FeedBack:
          # re: Java+MD5
          2006-01-19 11:13 | 音樂蟲子
          奇怪了,你怎么還需要在服務(wù)器那邊計算一次MD5的?
          WEB計算了MD5,數(shù)據(jù)庫保存的是密碼的MD5,服務(wù)器只要將數(shù)據(jù)庫的和WEB前端返回的比較一下就可以了呀?
            回復(fù)  更多評論
            
          # re: Java+MD5
          2006-01-19 15:11 | J2EE
          哈!!!
          一來這是一個測試性的代碼;二來,我做測試的時候,數(shù)據(jù)庫里不是md5的摘要,而是明文。  回復(fù)  更多評論
            
          # re: Java+MD5
          2011-05-16 16:40 | yjk
          服務(wù)端的md5和客戶端的md5,中文下為什么不一致呢?  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          <2011年5月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汾阳市| 临清市| 平潭县| 安吉县| 长兴县| 桑植县| 宜州市| 庆城县| 全椒县| 防城港市| 蓬溪县| 米易县| 自治县| 昭觉县| 子长县| 海南省| 哈密市| 九寨沟县| 铅山县| 东乌珠穆沁旗| 重庆市| 梅河口市| 驻马店市| 新丰县| 乐清市| 巴青县| 山东省| 慈溪市| 北碚区| 阿荣旗| 璧山县| 汽车| 蒙城县| 监利县| 合江县| 大荔县| 昭通市| 荃湾区| 石楼县| 军事| 栾城县|