web-dev-qa-db-ja.com

Javaでパスワードを暗号化および復号化する

Javaでパスワードを暗号化および復号化し、暗号化された形式でデータベースに保存します。オープンソースであれば素晴らしいでしょう。

34
Raje

[〜#〜] edit [〜#〜]:この答えは古い。 MD5の使用法は、簡単に壊れる可能性があるため、discouragedになりました。


MD5はあなたにとって十分に良いものだと思いますか? MessageDigest で実現できます。

MessageDigest.getInstance("MD5");

他にもリストされているアルゴリズムがあります here

本当に必要な場合は、サードパーティバージョンを以下に示します。 Fast MD5

9
zw324

MD5で暗号化するために使用するアルゴリズムは次のとおりです。暗号化された出力を返します。

   public class CryptWithMD5 {
   private static MessageDigest md;

   public static String cryptWithMD5(String pass){
    try {
        md = MessageDigest.getInstance("MD5");
        byte[] passBytes = pass.getBytes();
        md.reset();
        byte[] digested = md.digest(passBytes);
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<digested.length;i++){
            sb.append(Integer.toHexString(0xff & digested[i]));
        }
        return sb.toString();
    } catch (NoSuchAlgorithmException ex) {
        Logger.getLogger(CryptWithMD5.class.getName()).log(Level.SEVERE, null, ex);
    }
        return null;


   }
}

MD5を復号化することはできませんが、このメソッドに同じ文字列を入力すると、同じ暗号化された出力が得られるため、出力を比較できます。復号化する場合は、SHAを使用する必要があります。そのためには常にMD5を使用します。この例外はかなり冗長です。

20
Adrian Stamin

Jasypt はあなたのためにそれを簡単かつ簡単にできる

9
GustyWind

アルゴリズムの選択として、Java.security.MessageDigestSHAとともに使用できます。

参考のため、

ここで利用可能な例を試してください

3
raksja

私は最近、これに(Wicket btwと組み合わせて)Spring Security 3.0を使用しましたが、非常に満足しています。ここに良い 完全なチュートリアルドキュメント があります。 このチュートリアル もご覧ください。これは、Spring Security 2のハッシュ/サルティング/デコードのセットアップについての適切な説明を提供します。

2
Adriaan Koster