Como mandar a senha criptografada pro banco usando o MD5 no java?

Pessoal como eu faço para criptografa a senha do usuário para o BD, já ouvi falar q tem que ser pelo MD5, alguém poderia me ajudar?

Bom dia.

Olha isso: http://www.guj.com.br/java/282554-criptografia-md5- . Qualquer coisa, avisa!

[]'s

O MD5 é uma forma de converter uma quantidade de bytes em outros bytes…

Vale lembrar que você não vai conseguir recuperar o valor original e que é possível haver colisões, ou seja, 2 Strings diferentes geram a mesma saída, mas isso não é um problema de fato.

Como você não vai conseguir converter de volta, a solução é você criptografar o que o usuário digitou para a senha e comparar com o que está no banco de dados.

Outra dica importante é a prática do SALT, algumas senhas mais comuns já foram descobertas, se você só passar pelo código MD5, o seu sistema ainda não está seguro, então, sempre que for criptografar a senha, aplique algum padrão que irá modificá-la… Por exemplo, você pode inverter a ordem da String e concatenar algumas palavras…

Para ver mais como o MD5 trabalha e como funciona o salt: http://pt.wikipedia.org/wiki/MD5#Hashes_MD5

Esse é o código… Ele é feio pois trabalha com bytes…

private String toMD5(String password) throws NoSuchAlgorithmException {
		MessageDigest md = MessageDigest.getInstance("MD5");

		byte[] bs = password.getBytes();

		byte[] hash = md.digest(bs);

		StringBuilder hexString = new StringBuilder();

		for (int i = 0; i < hash.length; i++)
			if ((0xff & hash[i]) < 0x10)
				hexString.append("0" + toHexString((0xFF & hash[i])));
			else
				hexString.append(toHexString(0xFF & hash[i]));

		return hexString.toString();
	}

Fiz da seguinte maneira… uma classe para criptografar…

[code]public class criptografaSenha {

public static String md5(String senha) {
	String md5 = null;
	
	if(null == senha) return null;
	
	try{
		MessageDigest digest = MessageDigest.getInstance("MD5");
		
		digest.update(senha.getBytes(), 0, senha.length());
		
		md5 = new BigInteger(1,digest.digest()).toString(16);
		
	   //System.out.println(md5);
	
	}catch(NoSuchAlgorithmException e){
		e.printStackTrace();
	}
	return md5;
}[/code]

e no cadastro pego ela da seguinte forma

//aqui estou mandado a senha já criptografada para o BD
cd.setSenha(criptografaSenha.md5(senha));

Agora como eu faço para comparar com essa criptografia ?