it-swarm.com.de

Verschlüsseln und entschlüsseln Sie ein Passwort in Java

Ich möchte ein Passwort in Java) verschlüsseln und entschlüsseln und verschlüsselt in der Datenbank speichern. Es ist großartig, wenn es Open Source ist. Irgendwelche Vorschläge/Hinweise?

34
Raje

[~ # ~] edit [~ # ~] : Diese Antwort ist alt. Von der Verwendung von MD5 wird jetzt abgeraten , da es leicht beschädigt werden kann.


MD5 muss für dich gut genug sein, stelle ich mir vor? Sie können es mit MessageDigest erreichen.

MessageDigest.getInstance("MD5");

Es sind auch andere Algorithmen aufgeführt hier .

Und hier ist eine Drittanbieter-Version davon, wenn Sie wirklich wollen: Fast MD5

9
zw324

Hier ist der Algorithmus, den ich zum Verschlüsseln mit MD5 verwende. Er gibt Ihre verschlüsselte Ausgabe zurück.

   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;


   }
}

Sie können MD5 nicht entschlüsseln, aber Sie können Ausgaben vergleichen, da, wenn Sie dieselbe Zeichenfolge in diese Methode einfügen, dieselbe verschlüsselte Ausgabe vorliegt. Wenn Sie entschlüsseln möchten, müssen Sie den SHA verwenden. Sie verwenden niemals die Entschlüsselung für ein Benutzerkennwort. Verwenden Sie dazu immer MD5. Diese Ausnahme ist ziemlich überflüssig. Sie wird niemals ausgelöst.

20
Adrian Stamin

Jasypt kann es einfach und unkompliziert für Sie tun

9
GustyWind

Sie können Java.security.MessageDigest mit SHA als Algorithmusauswahl.

Als Referenz,

Hier verfügbares Beispiel ausprobieren

3
raksja

Ich habe kürzlich Spring Security 3.0 dafür verwendet (kombiniert mit Wicket übrigens) und bin ziemlich zufrieden damit. Hier ist ein gutes ausführliches Tutorial und Dokumentation . Schauen Sie sich auch dieses Tutorial an, das eine gute Erklärung für das Hashing/Salting/Decoding-Setup von Spring Security 2 gibt.

2
Adriaan Koster