gerei uma senha e guardei no banco de dados em hash md5 da seguinte maneira
public void recebeEGuardaSenhaEmHash(String usuario, String senhaIntroduzidaPeloUtilizador){
public MessageDigest md ;
try {
md = MessageDigest.getInstance("MD5");
} catch (Exception ex) {
ex.printStackTrace();
}
//Aqui ele convert a senha em hash
md.update(senhaIntroduzidaPeloUtilizador.getBytes());
byte[] hashMd5 = md.digest();
//Aqui imprime a senha em hash
System.out.println(hashMd5.toString());
//este metodo guarda a senha e utilizador no banco de dados como novo usuário.
guardaSenha(usuario, hashMd5.toString());
}
tudo corre bem,… eu vou ao banco de dados e vejo que la estao os dados de utilizador e a senha ja encriptada.
O problema é o seguinte :
Quando um utilizador fornecer a sua senha, como é que eu vou validar esta senha se ela está em hash ?
disseram me que o ideal seria eu converter a senha recebida tambem em hash e comparar as duas. mas o meu problema é saber como faço para retirar a senha do banco e comparar. pois quando eu retiro a senha do banco ela vem como string.
Acabei não explicando acima pq sua senha ficava diferente.
Quando vc usa essa linha encoder.encode(digest.digest()).toString().trim() ela criptografa sua senha. Se vc usar novamente essa linha, ela tipo, vai criptografar o que já foi criptografado.
Não sei o motivo, mas é o que está acontecendo.
Por isso quando vc escreve na tela a senha ela é o resultado experado, e quando faz o teste é outro resultado.
O que deve fazer é criar uma variavel que receba na primeira vez o resultado da criptografia e então testar essa variavel no seu IF.