Javaでパスワードを暗号化および復号化し、暗号化された形式でデータベースに保存します。オープンソースであれば素晴らしいでしょう。
[〜#〜] edit [〜#〜]:この答えは古い。 MD5の使用法は、簡単に壊れる可能性があるため、discouragedになりました。
MD5はあなたにとって十分に良いものだと思いますか? MessageDigest で実現できます。
MessageDigest.getInstance("MD5");
他にもリストされているアルゴリズムがあります here 。
本当に必要な場合は、サードパーティバージョンを以下に示します。 Fast MD5
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を使用します。この例外はかなり冗長です。
Jasypt はあなたのためにそれを簡単かつ簡単にできる
私は最近、これに(Wicket btwと組み合わせて)Spring Security 3.0を使用しましたが、非常に満足しています。ここに良い 完全なチュートリアル と ドキュメント があります。 このチュートリアル もご覧ください。これは、Spring Security 2のハッシュ/サルティング/デコードのセットアップについての適切な説明を提供します。