2014-11-13 1 views
9

Ich arbeite an Web-Anwendungsprojekt in Spring Hibernate MVC.Ich bin in der Datenbank mit codierten Passwort mit BCrypt-Algorithmus im Frühjahr Sicherheit gespeichert. Jetzt möchte ich das codierte Passwort erhalten, das entschlüsselt werden soll, um das Konto zu deaktivieren. Benutze das Konto, wo ich dem Benutzer eine E-Mail und ein Passwort gebe, um zu überprüfen, bevor der Benutzer das Konto deaktiviert. Ich habe ein Problem beim Entschlüsseln des Passworts. Kann mir jemand helfen, mich zu lösen oder irgendeine alternative Lösung für meine Anforderung?Entschlüsseln Sie das Bcrypt-codierte Passwort im Frühjahr Sicherheit zu deaktivieren Benutzerkonto

Antwort

18

Das Problem wird durch die Verwendung unter Code gelöst:

BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); 
encoder.matches(password, user.getPassword()); 

password - von der Form (JSP)
user.getPassword() - von Datenbank

BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); 
if(email.equalsIgnoreCase(user.getEmail()) && encoder.matches(password, user.getPassword())) { 
    userService.deactivateUserByID(user.getId()); 
    redirectAttributes.addFlashAttribute("successmsg", "Your account has been deactivated successfully."); 
    model.setViewName("redirect:/logout"); 
}else{ 
    redirectAttributes.addFlashAttribute("errormsg", "Email or Password is incorrect"); 
    model.setViewName("redirect:/app/profile/deactivate"); 
} 
+2

Nur um klar zu sein - dies nicht wirklich entschlüsseln das codierte Passwort, wie es in der Frage impliziert ist. In den Spring-Dokumenten überprüft 'BCryptPasswordEncoder.matches()', dass das codierte Passwort, das aus dem Speicher abgerufen wird, dem übergebenen unverschlüsselten Passwort entspricht, nachdem es ebenfalls codiert wurde. – Shaggy

Verwandte Themen