Login - criptografia

7 respostas
EDIMIL

Pessoal estou com um problema na hora de testar se um login é válido ou não, é o seguinte:

tenho um cadastro de funcionários que envia uma senha criptografada para o MySQL>>

private void jpSenhaFocusLost(java.awt.event.FocusEvent evt) {                                  
        jpSenha.setText(EncriptaSenha.encripta(jpSenha.getPassword().toString()));
    }  



funcionario.setFuncSenha(jpSenha.getPassword().toString());

EncriptaSenha>>

public static String encripta(String senha) {
        try {
            MessageDigest digest = MessageDigest.getInstance("MD5");

            digest.update(senha.getBytes());

            BASE64Encoder encoder = new BASE64Encoder();

            return encoder.encode(digest.digest());

        } catch (NoSuchAlgorithmException ns) {
            ns.printStackTrace();
            return senha;
        }
    }

quando vou testar, encripto a mesma senha novamente para testar com a que está no banco, mas a encriptação sai diferente,

query = entityManager.createNamedQuery("Funcionario.verificaLogin");
        query.setParameter("funcCod", Integer.parseInt(jfLogin.getText()));
        query.setParameter("funcSenha", EncriptaSenha.encripta(jpSenha.getPassword().toString()));
        List<FuncionarioBean> data = query.getResultList();
        
        if (data.size() > 0) {
            
            String args[] = new String[1];
            args[0] = data.get(0).getFuncCod().toString();
            JanelaInicio.main(args);
            dispose();
        } else {
            JOptionPane.showMessageDialog(null, "Usuário/Senha incorretos");
            dispose();
        }

sempre dando a mensagem “Usuário/Senha incorretos”, alguém sabe qual o problema?

desde já agradeço!!

7 Respostas

aix

fiquei curioso com uma coisa, como vc compara as senhas ?

FernandoFranzini

Vc deve estar comparando a senha direto no OQL…
Não tem como nos adivinharmos…kkkk
Depura ai e descobre vc!

EDIMIL

aix, eu comparo a senha enviando uma consulta para o banco, se retornar algum resultado está correta…

query = entityManager.createNamedQuery("Funcionario.verificaLogin");  
        query.setParameter("funcCod", Integer.parseInt(jfLogin.getText()));  
        query.setParameter("funcSenha", EncriptaSenha.encripta(jpSenha.getPassword().toString()));  
        List<FuncionarioBean> data = query.getResultList();  
          
        if (data.size() > 0) {
             ...
aix

aix, eu comparo a senha enviando uma consulta para o banco, se retornar algum resultado está correta…

pois é brother, acredito que sua lógica não esteja certa, pois me parece que você esta comparando a String e não o conteúdo, você disse:

caso se retornar algum resultado esta correto
mas baseado em que ?

EDIMIL

aix, eu comparo a senha enviando uma consulta para o banco, se retornar algum resultado está correta…

pois é brother, acredito que sua lógica não esteja certa, pois me parece que você esta comparando a String e não o conteúdo, você disse:

caso se retornar algum resultado esta correto
mas baseado em que ?

Minha namedQuery faz a consulta pra mim>>

@NamedQuery(name = "Funcionario.verificaLogin", query = "SELECT f FROM FuncionarioBean f WHERE f.funcCod = :funcCod and f.funcSenha = :funcSenha"),

se usuário ou senha não estiver correto não vai me retornar nada,

consegui resolver o problema colocando um método deprecated

query.setParameter("funcSenha", EncriptaSenha.encripta(jpSenha.getText()));

agora não sei até quando vai funcionar, caso você tiver outra solução eu agradeço…

tek

Buenas,

Escrevi um tópico sobre Método getText() é depreciado na utilização JPasswordField (Java), acho que é parecido com o que você precisa, para mais detalhes acesse o link abaixo.

http://www.tiagoek.com.br/index.php?pag=depreciado.php

EDIMIL

tek:
Buenas,

Escrevi um tópico sobre Método getText() é depreciado na utilização JPasswordField (Java), acho que é parecido com o que você precisa, para mais detalhes acesse o link abaixo.

http://www.tiagoek.com.br/index.php?pag=depreciado.php

Tiago muito obrigado pela dica, ainda estava usando o gettext, preocupado…

valeu!!

Criado 6 de setembro de 2011
Ultima resposta 1 de out. de 2011
Respostas 7
Participantes 4