Login e Senha - (Erro ao comparar)

8 respostas
F

Fala galera, estou com um problema no meu Login, quando cadastro o funcionário o JPAssword criptografa a senha e armazena do banco MySQL.
quando recebo ele emum String e comparo com o que o usuário digitou não bate: o que está errado? como faço para descriptografar quando recebo do banco?

veja o código:

String userx = user.getText();  //recebe usuario
        String senhax = new String(password.getPassword()); //recebe senha
        
        // Realiza consulta em SQL
    
        bd.conectaDB();
        if (bd.estaConectada()){
        System.out.println("Banco abriu");
        
        ResultSet dados1=bd.buscaRegistros("SELECT * FROM `funcionarios` WHERE login ='"+userx+"'");
        ResultSet dados2=bd.buscaRegistros("SELECT * FROM `funcionarios` WHERE senha ='"+senhax+"'");        
        if (dados1 != null){
            JOptionPane.showMessageDialog(null,"Usuário não encontrado");
        }
        if (userx.equals(dados1) && senhax.equals(dados2)){
            ////---->  chamar Janela1
            janela1.setVisible(true);
        }
        
        bd.desconectaDB();
        
}

8 Respostas

Hebert_Coelho

Pq ao invés de descriptografar, você não criptografa oq vc recebeu e não compara com oq existe no banco?

Se você não tem acesso ao método que criptografa, tu ta ferrado.

Existe valores que não tem como ser descriptografado.

jeffev

jakefrog:
Pq ao invés de descriptografar, você não criptografa oq vc recebeu e não compara com oq existe no banco?

Se você não tem acesso ao método que criptografa, tu ta ferrado.

Existe valores que não tem como ser descriptografado.

É isso mesmo, sempre ouvi falar que se deve criptografar e senha recebida a comparar com a senha criptografada que esta no banco.

F

O campo JPasswordField está criptografando automático ao incluir no banco.

veja o código do cadastro:

char[] senha1 = func6.getPassword();  // pega a senha aqui
      char[] senha2 = func7.getPassword();  // pega a confirmação da senha
      
      if (func6 == null || func7 ==null){    //testa se algum campo esta vazio
          JOptionPane.showMessageDialog(null,"Os campos senha não podem estar vazios!!");
      }
      else if (Arrays.equals(senha1, senha2)) {   //testa se as senhas são iguais

      //Insere os dados para cadastro do funcionarios (Banco = funcionarios)
      String funcionario="INSERT INTO funcionarios(nome,endereco,telefone,celular,login,senha) VALUES('"+func1.getText()+"','"+func2.getText()+"','"+func3.getText()+"','"+func4.getText()+"','"+func5.getText()+"','"+func7.getPassword()+"')";
      bd.executa(funcionario);    
        JOptionPane.showMessageDialog(null,"Funcionário cadastrado com sucesso!");
      } 
      else{
        JOptionPane.showMessageDialog(null,"senhas não podem ser diferentes!!");
      }

   }

o campo [color=red]+func7.getPassword()+[/color] está incluindo direto a senha… já tentei comparar ela diretamente com a do campo com o banco mais não retorna nada

aix

desculpa me meter mas não da para comparar o hash ?

F

Como faço isso aix ??
posso tentar comparar… sou novato em Java então ta meio complicado.

cadastrei um usuário teste: (admin, 123)

olha como incluiu no banco:

login senha
admin [C@1142196

aix

se não pode descriptografar, criptografa novamente o que estiver recebendo e compara :wink:

Hebert_Coelho

Pq você não joga o valor dentro do jPassword também e depois compara?

B

Cara, não entendi muito bem o teu código porque isso aqui a baixo não faz muito sentido, tu tá jogando o usuario digitado na busca e depois tu joga a senha na busca, a senha pode ser a mesma de outro usuario que vai vir do mesmo jeito

ResultSet dados1=bd.buscaRegistros("SELECT * FROM `funcionarios` WHERE login ='"+userx+"'"); ResultSet dados2=bd.buscaRegistros("SELECT * FROM `funcionarios` WHERE senha ='"+senhax+"'");

Então pelo o que eu entendi é tu faz um

e dai com base nessa senha que volta no banco tu compara ela com a digitada, outra coisa não é muito recomendado que se coloque códigos do banco de dados jogados pelo meio da aplicação, separe eles em métodos em outra class, eles ficam muito mais fáceis de usar e entender o erro.

Criado 31 de agosto de 2012
Ultima resposta 1 de set. de 2012
Respostas 8
Participantes 5