2012-05-01 35 views
1

次のコードを使用して、私のWebページのセキュリティを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は片方向アルゴリズムです。これは1対1のマッピングではありません。その出力を解読する方法はありません。

保存されたMD5暗号化パスワードを使用する場合は、入力を暗号化し、結果を保存された暗号化パスワードと比較することでユーザーを認証する必要があります。

+0

春のセキュリティ()によって解読される可能性のあるパスワードを暗号化する方法はありますか? – IturPablo

+0

http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/encoding/PasswordEncoder.htmlからの引用: "*これは一般に、 MD5やSHAのような多方面の*メッセージダイジェストではありませんが、エンコーディングを全くしませんが、フィードされたものと同じパスワードを返すプレーンテキストのバリアントかもしれません。後者は、元のパスワードをas- "です。 –

+0

ドミトリーに感謝します。だから、私は春のセキュリティがパスワードエンコーダMD5 - SHA一方向の暗号化しかサポートしていないと思います。私は正しい?どんな方法もありがとう。 – IturPablo