2012-05-01 236 views
1

我使用以下代碼使用MD5和Im加密我的網頁中的安全性。密碼加密/解密彈簧安全

public static String stringToMD5(String password) 
    { 

     MessageDigest messageDigest; 

     try { 
      messageDigest = MessageDigest.getInstance("MD5"); 
      messageDigest.update(password.getBytes(),0, password.length()); 
      String hashedPass = new BigInteger(1,messageDigest.digest()).toString(16); 
      if (hashedPass.length() < 32) { 
       hashedPass = "0" + hashedPass; 
      } 
      return hashedPass; 
     } catch (NoSuchAlgorithmException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return password; 
    } 

但因爲自定義的方式來登錄,我不得不開發的定製AbstractAuthenticationProcessingFilter現在我已經解密MD5。

所以問題是如何解密由該函數產生的。

在此先感謝。

回答

2

MD5是一種單向算法。這不是一對一映射。沒有辦法解密它的輸出。

使用存儲的MD5加密密碼時,您必須通過加密其輸入並將結果與​​存儲的加密密碼進行比較來驗證用戶身份。

+0

是否有任何其他方式來加密由spring security()支持的可以解密的密碼? – IturPablo

+0

來自http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/encoding/PasswordEncoder.html的引用:「*這通常是單向鏈接,如MD5或SHA,也可以是一個純文本變體,它根本不編碼,而是返回相同的密碼,後者在插入原始密碼時很有用,是「。 –

+0

感謝德米特里,所以我猜Spring安全只支持密碼編碼器MD5 - SHA單向加密。我對嗎?任何方式謝謝。 – IturPablo