2017-02-24 2 views
2

Ich benutze Spring MVC und ich möchte das Passwort verschlüsseln, das in dB gespeichert wird, ich habe mir andere Threads angeschaut und sie schlagen vor, mit MD5 zu gehen. Ist es eine gute Übung, mit MD5 zu gehen, oder gibt es eine andere Methode, um dies zu erreichen?Passwortverschlüsselung im Frühling MVC

+1

zu verwenden, wenn Sie mit feder Sicherheit können Sie Federsicherheitskennwort-Encoder verwenden und kann auch implementiert eigene –

Antwort

0

Können Sie klären codieren, wenn Sie für Spring Security suchen oder Frühlings-MVC. Ihr Fragentitel ist "" Passwortverschlüsselung in "Spring MVC", während Sie die Frage für Spring Security getaggt haben.

Frühling Sicherheit schlägt folgende org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder

http://docs.spring.io/spring-security/site/docs/4.2.1.RELEASE/reference/html/core-services.html#core-services-password-encoding

+1

Ich bin auf der Suche nach Passwort-Verschlüsselung in Spring Security – Ramanathan

+0

Großartig, ich habe den entsprechenden Link von Frühjahr Referenzseiten geteilt. Wenn Sie Hilfe benötigen, fügen Sie einen Kommentar hinzu. – bhrt

0

Nein; Verwenden Sie BCrypt - verfügbar im Frühjahr mit BCryptPasswordEncoder.

1

Verwenden Sie nicht MD5, das Problem mit MD5-Hashing ist, dass es relativ schnell zu tun ist und wenn jemand die Hashes erreicht, können sie es ziemlich leicht erzwingen. Es gibt auch Rainbow-Tabellen, die Listen von Passwörtern mit ihren zugehörigen MD5-Hashes sind.

Wie @ Jan Nielsen behauptet, ist BCrypt weit überlegen. Ich persönlich benutze PBKDF2. Beide Ansätze arbeiten mit einem zufälligen Salz, während sie den Hash generieren. In der Datenbank speichern Sie das Salz und das Hash-Passwort. Ich gehe gerne einen Schritt weiter und speichere auch die Anzahl der Iterationen, mit denen der Hash erstellt wurde.

Hier ist ein guter Blog zur Passwortverschlüsselung, der die Details mit Codebeispielen ausführlicher behandelt. https://crackstation.net/hashing-security.htm

1

Sie können BCryptPasswordEncoder verwenden, um Ihr Kennwort zu codieren, um das zu tun, müssen Sie eine Bean dieser Klasse erstellen.

@Bean 
public PasswordEncoder passwordEncoder() { 
    return new BCryptPasswordEncoder(); 
} 

Und während der Registrierung Ihrer Benutzer (neuen Benutzer-Datenbank zu speichern), können Sie Auto Draht PasswordEncoder und encode Methode aufrufen Ihr Passwort

@Autowired PasswordEncoder passwordEncoder; 

public User registerUser(User user){ 
    // other logic 

    String encryptedPassword = passwordEncoder.encode(user.getPassword()); 
    user.setPassword(encryptedPassword); 

    //logic to save the user to DB 
} 
+0

Danke für Ihre Antwort, aber ich kann nicht verstehen, wenn ich Passwort auf diese Weise verschlüsselt, wie das Passwort übereinstimmen kann, wenn ich versuche, mich anzumelden? Denn wenn ich nicht falsch bin "BCryptPasswordEncoder" die ganze Zeit erzeugen unterschiedliche Wert. Wie ich neu zu Spring bin :) –

+0

Wenn Sie versuchen, sich anzumelden und wenn Sie Passwort an Login-Methode als einfachen Text übergeben, dann Sie muss erneut die encode-Methode auf das Passwort Benutzer haben zur Verfügung gestellt während der Protokollierung und dann vergleichen –