try{pst=conexao.prepareStatement(sql);//pst.setString(1,idate.getText() );pst.setString(1,txtNomeAtendente.getText());pst.setString(2,txtEndereAtendente.getText());pst.setString(3,txtFoneAtendente.getText());pst.setString(4,txtCpfAtendente.getText());pst.setString(5,txtEmail.getText());pst.setString(6,txtSenhaAtendente.getText());pst.setString(7,txtLoginAtendente.getText());pst.setString(8,cboUsoPerfil.getSelectedItem().toString());if((txtCpfAtendente.getText().isEmpty())||(txtNomeAtendente.getText().isEmpty())||(txtLoginAtendente.getText().isEmpty())||(txtSenhaAtendente.getText().isEmpty())){JOptionPane.showMessageDialog(null," Todos os Campos Marcados com *, são Obrigatórios");}else{intadicionado=pst.executeUpdate();if(adicionado>0){JOptionPane.showMessageDialog(null,"Usuario Cadastrodo com Sucesso!!!");idate.setText(null);txtNomeAtendente.setText(null);txtEndereAtendente.setText(null);txtEmail.setText(null);txtCpfAtendente.setText(null);txtFoneAtendente.setText(null);cboUsoPerfil.setSelectedItem(null);txtLoginAtendente.setText(null);txtSenhaAtendente.setText(null);}}}catch(Exceptione){JOptionPane.showMessageDialog(null,e);}
O usuário não precisa saber a senha criptografada porque para ele a senha continua sendo a original, ou seja, quando ele fazer login, vai digitar 1234 (por exemplo), seu código vai receber o que foi digitado, converter na versão criptografada e comparar com o valor do banco (que também é armazenado criptografado).
Abraço.
Henrique_Menna
ai que esta, eu digito 1234 e não entra no sistema, to usando MD5
Henrique_Menna
ai que esta, eu digito 1234 e não entra no sistema, to usando MD5
TerraSkilll1 like
O que você quer dizer com “não entra no sistema”? Não está gravando no banco? Ou o login falha?
O código que você postou só mostra a parte que grava um novo usuário no banco. Ele está sendo gravado corretamente (especialmente os campos de login senha)? Se sim, mostre o código onde você compara o que foi digitado no login com o que está no banco.
Faça debug na parte de login, ou adicione mensagens no console (System.out.println) ou em JOptionPanes para saber se os valores comparados são os que realmente precisam ser comparados.
Abraço.
Henrique_Menna
Ate esta parte esta perfeito, eu digo pra descriptografar, pois o usuário tem que digitar 1234 novamente, não sei se pude explicar bem
MessageDigestalgorithm=MessageDigest.getInstance("SHA-256");bytemessageDigest[]=algorithm.digest(senha.getBytes("UTF-8"));StringBuilderhexString=newStringBuilder();for(byteb:messageDigest){hexString.append(String.format("%02X",0xFF&b));}Stringsenhap=hexString.toString();pst=conexao.prepareStatement(sql);//pst.setString(1,idate.getText() );pst.setString(1,txtNomeAtendente.getText());pst.setString(2,txtEndereAtendente.getText());pst.setString(3,txtFoneAtendente.getText());pst.setString(4,txtCpfAtendente.getText());pst.setString(5,txtEmail.getText());pst.setString(6,senhap);pst.setString(7,txtLoginAtendente.getText());pst.setString(8,cboUsoPerfil.getSelectedItem().toString());if((txtCpfAtendente.getText().isEmpty())||(txtNomeAtendente.getText().isEmpty())||(txtLoginAtendente.getText().isEmpty())||(txtSenhaAtendente.getText().isEmpty())){JOptionPane.showMessageDialog(null," Todos os Campos Marcados com *, são Obrigatórios");
TerraSkilll
Você não deve nem precisa descriptografar o que está no banco. Você criptografa o que o usuário digitou no login e compara com o que está no banco. Em pseudocódigo, seria mais ou menos algo assim:
booleantentarFazerLogin(){
StringloginDigitado=txtComOLoginDigitadoParaFazerLogin.getText();StringsenhaDigitada=txtComASenhaDigitadaParaFazerLogin.getText();StringsenhaCriptografadaQueEstaNoBancoDeDados=metodoParaPegarSenhaDoBancoBuscandoPeloLogin(loginDigitado);StringsenhaDigitadaCriptografada=metodoQueGeraoMD5OuQualquerHashQueVoceEstejaUsando(senhaDigitada);if(senhaCriptografadaQueEstaNoBancoDeDados.equals(senhaDigitadaCriptografada)){
returntrue; // senha digitada é a correta, permite login}else{
returnfalse; // senha digitada está errada, não permite login}
}