Я работаю над проектом веб-приложения в Spring Hibernate MVC.
Я храню закодированный пароль в базе данных, используя алгоритм Bcrypt в безопасности Spring.
Теперь я хочу, чтобы этот кодированный пароль был декодирован для деактивации. Используйте учетную запись, где я даю пользователю электронную почту и пароль для проверки, прежде чем пользователь деактивирует учетную запись.
У меня проблема с получением расшифрованного пароля.
Может ли кто-нибудь помочь мне выбраться из этого или найти альтернативное решение для моего требования?
Расшифруйте пароль с кодировкой Bcrypt в spring для деактивации учетной записи пользователя
Ответ 1
Проблема решается с помощью приведенного ниже кода:
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
encoder.matches(password, user.getPassword());
password
- из формы (JSP) user.getPassword()
- из базы данных
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
BCryptPasswordEncoder bcrypt = new BCryptPasswordEncoder();
boolean isPasswordMatches = bcrypt.matches(userenteredpasswordWithotEncryoted, encryptedPasswordFromDb);
Ex boolean isPasswordMatches = bcrypt.matches("Truck123", "$ 2a $ 10 $ kcVH3Uy86nJgQtYqAFffZORT9wbNMuNtqytcUZQRX51dx6IfSFEd.");
if (isPasswordMatches)//правильный пароль еще//Неправильный пароль