Criptografar Senha do Usuário

4 respostas
fabioguida

Galera blz...

to com uma duvida enorme...eu tenho um cadastro de usuarios, onde eu coloco a senha e ela é gravada no banco, só que quando ela é gravada, esta sendo gravada normal, se eu digitar 123456 no campo senha, assim ela sera gravada no banco...oq naum é legal...
entaum como criptografar...andei pesquisando e vi algumas classes em java...e vi tbm alguns comandos em sql..oq eu axo que seria mais simples...mas se alguem puder me ajudar eu fikaria muito grato...

segue o codigo de inserir os dados do usuario e a validação do login

public UsuarioDTO inserir(UsuarioDTO usuarioDTO) throws SQLException{
       
        String sql= "insert into usuarios (nome,cargo,dataCadastro,login,senha) values (?,?,?,?,?)";
        
        PreparedStatement pstmt = getDatabase().getInstance().prepareStatement(sql);
        
        pstmt.setString(1,usuarioDTO.getNome());
        pstmt.setString(2,usuarioDTO.getCargo());
        pstmt.setTimestamp(3,usuarioDTO.getDataCadastro());
        pstmt.setString(4,usuarioDTO.getLogin());
        pstmt.setString(5,usuarioDTO.getSenha());
        
        pstmt.executeUpdate();
                
        return usuarioDTO;
    }
public UsuarioDTO validarLogin( String login, String senha  ) throws SQLException{
        UsuarioDTO usuarioDTO = null;
        // comando SQL para consulta de login/senha
        String sql = "Select codigo, nome, cargo, dataCadastro, login, senha " +
                     "from usuarios where senha = ? and login = ?";
        // envia comando para o servidor de banco de dados
        PreparedStatement pstmt = getDatabase().getInstance().prepareStatement(sql);
        // configura parâmetros do comando SQL
        pstmt.setString( 1, senha);
        pstmt.setString( 2, login );
        // executa comando SELECT e armazena retorno
        ResultSet dados = pstmt.executeQuery();
        // verifica se vieram dados
        if ( dados.next() ){ // vieram dados
            usuarioDTO = registroParaDTO(dados);
        }
        return usuarioDTO;
        
    }

4 Respostas

thiago.correa

Veja se isso te ajuda

public static void main(String[] args) throws Exception {
        MessageDigest md = MessageDigest.getInstance("MD5");
        String senha = "123456";
        byte[] senhaC =  md.digest(senha.getBytes());
        BASE64Encoder b = new BASE64Encoder();
        System.out.println(b.encode(senhaC));
        
    }

Aqui no guj mesmo isso foi exaustivamente debatido

http://www.guj.com.br/jforum.java?module=search&action=search&search_keywords=criptografar&x=12&y=12

fabioguida

valeu pela ajuda…mas fiz uma coisa bem mais simples e que funcionou perfeitamente para mim…

no metodo inserir fiz isso

“insert into usuarios (nome,cargo,dataCadastro,login,senha) values (?,?,?,?,md5(?))”;

e no validarLogin fiz isso

String sql = "Select codigo, nome, cargo, dataCadastro, login, senha " +
“from usuarios where senha = md5(?) and login = ?”;

valeu pela ajuda ai…

faelcavalcanti

recomendo vc utilizar SHA-256 no próprio java passando para um tipo clob(recomendado caso conteudo não seja binário) no banco para armazenar o valor da senha

thiago.correa

fabioguida:
valeu pela ajuda…mas fiz uma coisa bem mais simples e que funcionou perfeitamente para mim…

no metodo inserir fiz isso

“insert into usuarios (nome,cargo,dataCadastro,login,senha) values (?,?,?,?,md5(?))”;

e no validarLogin fiz isso

String sql = "Select codigo, nome, cargo, dataCadastro, login, senha " +
“from usuarios where senha = md5(?) and login = ?”;

valeu pela ajuda ai…

É uma opção simples e prática, porém o único problema é que se amanhça ou depois você inventa (ou tem que) mudar de BD, não são todos os bancos que possuem essa função!
Mas, se você não pretende, então fique com essa solução mesmo e assunto fechado!

Criado 2 de julho de 2009
Ultima resposta 2 de jul. de 2009
Respostas 4
Participantes 3