Criptografando senha com Spring Security
No artigo de hoje vamos ver como criptografar senha usando o Spring Security. O objetivo é que a senha do usuário não seja salva no seu banco de dados.
Olá, pessoal!
No artigo de hoje vamos ver como criptografar senha usando o Spring Security. O objetivo é que a senha do usuário não seja salva no seu banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data →, e já sabemos o motivo de fazer isso. Não vou entrar nos detalhes.
Requisitos
- Baixe a versão mais recente do SpringSecurity (para o post estou usando a versão 3.2.x);
Há várias soluções na internet, desde usando o Java↳Java42 conteúdosNovidades do Java 26 (para desenvolvedores)Dev (Back & Front) · mar 2026Visual Studio Code para Java: o guia completo (dicas, configuração e extensões)Dev (Back & Front) · out 2025Quarkus: Modernizando a linguagem Java para a era da nuvemDev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → puro ou usando APIs, frameworks para criptografar a senha, e para quem está usando o SpringSecurity no projeto tem uma vantagem: já tem uma classe implementada pelo pessoal do Spring que faz isso em uma linha. Vejamos a classe que criei a seguir para fazer isso. Vejam como é simples:
public abstract class GenerateHashPasswordUtil {
private static Object salt;
public static String generateHash(String password) {
MessageDigestPasswordEncoder digestPasswordEncoder = getInstanceMessageDisterPassword();
String encodePassword = digestPasswordEncoder.encodePassword(password, salt);
return encodePassword;
}
private static MessageDigestPasswordEncoder getInstanceMessageDisterPassword() {
//informo tipo de enconding que desejo
MessageDigestPasswordEncoder digestPasswordEncoder = new MessageDigestPasswordEncoder("MD5");
return digestPasswordEncoder;
}
//método que faz a validação como não usamos salt deixei em null
public static boolean isPasswordValid(String password, String hashPassword) {
MessageDigestPasswordEncoder digestPasswordEncoder = getInstanceMessageDisterPassword();
return digestPasswordEncoder.isPasswordValid(hashPassword, password, salt);
}
}
E aqui a classe de teste que valida alguns cenários:
public class GenerateHashPasswordUtilTest {
@Test
public void testHashWasGenerateWithSuccess() {
String password="1234";
assertNotNull(GenerateHashPasswordUtil.generateHash(password));
}
@Test
public void testValidIfPasswordIsValidAfterHashed(){
String password="brazil";
String hashPassword =GenerateHashPasswordUtil.generateHash(password);
boolean expectedValidPassword = GenerateHashPasswordUtil.isPasswordValid(password, hashPassword);
assertTrue(expectedValidPassword);
}
@Test
public void testPassWordIsNotEqualToHashCodeGenerated(){
String password = "XPto";
String passwordhash = GenerateHashPasswordUtil.generateHash(password);
String passwordTyped = "xPto";
boolean expectedInvalidPassword = GenerateHashPasswordUtil.isPasswordValid(passwordTyped, passwordhash);
assertFalse(expectedInvalidPassword);
}
}
Curtiu? Se quiser ver o código hash basta imprimir no console.
Abraços e vou ficando por aqui.





