Através do JPasswordField (getPassword()) persisti no banco PostgreSQL (estou guardando em uma VARCHAR(30))e percebi que foi gravado de forma criptografada. Agora estou com um campo JPasswordField o qual desejo disponibilizar para o usuário digitar sua senha e comparar com o que está gravado no banco.
O que não estou conseguindo é criar um procedimento que compare estes valores.
char[] registro = campo.getPassword();
String senha = new String(registro);
if (senha.equals(usuario.getSenha))
System.out.println("Senha correta !");
else
System.out.println("Senha incorreta !");
// Embora a senha esteja sendo digitada corretamente o resultado não é igual ao que esta gravado no banco.
Devo armazenar a senha criptografada no PostgreSQL em uma varchar mesmo ?
Há como recuperar o valor do banco e descriptografar para aí sim comparar com o que foi digitado ?
Cara sinto te informar, mas o que você gravou no banco não foi o valor criptografado do texto que foi digitado, na verdade, o que você pegou foi o toString do array de char que é o retorno do método getPassword().
Uma opção é transformar o array em String assim: String text = String.copyValueOf(password);
Eu imagino (e pelos meus testes) que o JPasswordField, sendo um componente de tela, não teria a responsabilidade de criptografar a string digitada nele para vc,a responsabilidade dele é de apenas não mostrar essa string na tela, mas quando vc faz um getPassword, vc obteria a string que o cara digitou.
Quem seria o responsavel por criptografar isso é vc, então se esta gravando criptografado no banco, é vc que esta fazendo isso em algum lugar e não o JPasswordField.getPassword.
Sendo assim, quando o usuario se logar no seu sistema, vc vai pegar a senha que o cara digitou no login (dentro de um JPasswordField) e comparar a criptografia dessa senha com o que esta no seu banco.
Ou seja, caso vc grave no seu banco assim:
a leitura seria assim
Caso vc criptografa a senha usando java antes de gravar no banco, então vc tambem deve criptografar (da mesma forma) o que o cara digitou no login antes de buscar do banco (fazer a comparacao da senha digitada no login com a senha que esta no banco).
Soh uma observação, não use para isso um algoritmo que te permita descriptografar a senha.