Validando troca de senha do usuario logado (Criptografado(MD5))

12 respostas
Tino_

Boa tarde galera,

Estou desenvolvendo aqui no trampo um esquema para trocar a senha do usuário logado,
porem preciso validar a senha antiga para saber se é a mesma.
Porem de novo, pois a senha está criptografada com MD5 como consigo fazer essa validação?

12 Respostas

Rafael_Guerreiro

Simples, criptografe a nova senha e veja se são iguais.

Tino_

Então Guerreiro, eu já tentei isso. Porem não saem iguais as criptografias, é pra ser igual?

Rafael_Guerreiro

Com a mesma senha sim, com senhas diferentes não.

Então se o user quer TROCAR a senha, você deve deixar ele trocar caso as duas senhas criptografadas sejam diferentes.

Tino_

então fiz o esquema que vc falou, debuguei aqui…

private boolean verifyPassword()
	{
		if(authenticationService.getUsuarioLogado().getPassword() == passwordEncoder.encode(oldPassword)){
			return true;
		}

		return false;
	}

só que o authenticationService.getUsuarioLogado().getPassword() , me retorna um hash

e o passwordEncoder.encode(oldPassword) retorna outro hash

e o metodo usado para critografar a senha é este mesmo encode.

ErickRAR

1- Comparação de strings é com o método equals
2- Se você (espero que né) guardou a senha criptografada no banco, não precisa criptografar de novo para comparar

é só if (criptografar(senhaAntigaDigitadaPeloUsuario).equals(senhaAntigaPegaNoBanco)){…

Tino_

ErickRAR,

rsrs o == está ai pq fiz um teste aqui e esqueci de tirar antes de mandar aqui no post, o código original é com .equals …
e o metodo getUsuarioLogado() está pegando do banco a senha criptografada.

=S

Tino_

Percebi também que toda vez que estou testando e debugando,
o metodo de criptografar gera um hash diferente toda vez.

ou seja, nunca vai ser igual ?

Rafael_Guerreiro

é exatamente o que o ErickRAR falou.

Você vai criptografar a senha DIGITADA apenas.

Rafael_Guerreiro

Tino_:
Percebi também que toda vez que estou testando e debugando,
o metodo de criptografar gera um hash diferente toda vez.

ou seja, nunca vai ser igual ?


Então a sua criptografia está MUITO errada. Veja se você não está usando nenhuma data para compô-la.

Tino_

A criptografia utilizada aqui na empresa é

o metodo encode, que pelo oq olhei aqui é spring security…

tem algo a ver?

Tino_
Rafael_Guerreiro

Você não entendeu, olhe primeiro, o que vc está usando para ser criptografado.

Depois, procure dentro do código do Spring como que ele faz isso.

Criado 19 de setembro de 2014
Ultima resposta 19 de set. de 2014
Respostas 12
Participantes 3