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 ?