Criptografar Senha do Usuário

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

[code] 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;
}[/code]

[code] 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;

}[/code]

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

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…

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

[quote=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…[/quote]

É 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!