Comparar senha pegando dados criptografados do Banco

Olá pessoal!

Eu consegui fazer a comparação usando o JPassworldField porém eu nao sei como pegar a senha gravada criptografada no banco de dados e comparar com a senha digitada na hora de fazer o login…

Você vai ter que ver qual o algoritmo foi usado pra criptografar a senha do banco, se a criptografia for um rash você terá que criptografar a senha digitada e comparar os 2 hash’s, se não for uma criptografia reversivel você pode decriptografar o que está no banco e comparar.

Olá jairelton, então eu somente usei o JPasswordField e ele criptougrafou e gravou no banco, eu não fiz nenhum algoritmo de criptografia… Você tem alguma idéia de como decriptografar…

você tava usando String pass = new String(jpass.getPassword()); certo?

tenta usar

String pass = String.valuesOf( jpass.getPassword() ); e ve o que dá!

Então BrunoBastos…
Como eu estou pegando a senha do banco de dados ele vem do tipo String, creio que não existe a opção getPassword()…

Como você está fazendo para gravar essa senha? não é de um campo JPasswordField?

O problema de gravar a senha já está resolvido… Gravei ela criptografada mesmo e usei o

String senha = new String(senha.getPassword()) para pegar ela descriptografa…
Para poder fazer a comparação:
senha e confSenha…
obs: só usei para isso

Mas para segurança eu preciso gravar ela criptografada.
Agora eu tenho a tela Login, que contém os campos…
Login:
Senha:
obs:para logar ao sistema.

Em que tenho que comparar com a senha Já gravada no banco em que está criptografada…

Se você simplesmente usou o getPassword() e não criptografou, a senha continua descriptografada, o getPassword() simplesmente te retorna um array de char ao inves de uma String, mas não é criptografado.

Você pode usar um hash pra criptografar.

[code]String original = String.valueOf(textfield.getPassword());

MessageDigest md = MessageDigest.getInstance(“MD5”);

String cripto = new String(md.digest(original));[/code]

E esse hash não pode ser descriptografado.

Pode usar outros algoritmos mais avançados no lugar de MD5 tambem.

Então, como eu disse assim eu apenas usei o
String senha = new String(jPasswordField.getPassword()), para fazer a comparação de senha e confirmacaoSenha, na hora de fazer o cadastro. Mas na hora de gravar a senha eu utilizei o
String senha = jPasswordField.getPassword().toString().

Então se vc der um select na tabela usuário vc não vai conseguir ler a senha pois a gravou criptografada. ex: C@effjogh.

Então eu agora quero fazer o login. Então eu tenho que fazer uma nova comparação da senha com a outra senha gravada que está criptografada.

Alguém ja fez algo assim.

Isso não é criptografia, você sequer está gravando a senha no banco, isso que você está gravando é uma representação em String de um array, que não significa absolutamente nada.

faça um teste assim pra você ver:

[code]char[] c = {‘J’, ‘A’, ‘I’, ‘R’};

System.out.println(c.toString());[/code]

Isso vai imprimir algo parecido com: [C@130c19b
Que não tem nada a ver com o JAIR escrito aí.

Se quer criptografia, faça você mesma, o JPasswordField não tem isso.

E pra pegar o conteudo do JPasswordField como String faça:

String.valueOf(campo.getPassword());

Ahh certo…

Valeu!!! Agora entendi…