2012-10-23 54 views
1

我創建MD5這樣:如何驗證MD5

public void encrypeUsername(String sessionid) 
    { 
     byte[] defaultBytes = sessionid.getBytes(); 
     try 
     { 
      MessageDigest algorithm = MessageDigest.getInstance("MD5"); 
      algorithm.reset(); 
      algorithm.update(defaultBytes); 
      byte messageDigest[] = algorithm.digest(); 

      StringBuffer hexString = new StringBuffer(); 
      for (int i = 0; i < messageDigest.length; i++) 
      { 
       hexString.append(Integer.toHexString(0xFF & messageDigest[i])); 
      } 
      System.out.println("sessionid " + sessionid + " md5 version is " + hexString.toString()); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 



    } 

輸入123456,我們得到MD5:e1adc3949ba59abbe56e057f2f883e

我想創造另一種方法的結果進行驗證。

例如,如果我給e1adc3949ba59abbe56e057f2f883e和「123456」的輸入,那麼我得到的結果是:true/false。

任何想法如何實現這一目標?

謝謝, 射線。

+0

呃......再次加密輸入? – sje397

+0

我認爲mybe有更快的算法,然後再次重新加密。謝謝。 – rayman

回答

3
String pass = "123456"; 
String secret = "e1adc3949ba59abbe56e057f2f883e"; 
if encrypeUsername(pass).equals(secret) System.out.printl("ok!") 

請記住,md5是單向的。很難再從密碼中取回密碼。

(*)對於弱密碼來說並不難。

+0

這個工作嗎?該方法被定義爲'public void',因此它不會返回要比較的字符串的散列版本 – hnvasa