Criptografando senhas usando MD5 em Java

Olá a todos!

Quando se trabalha com sistemas com múltiplos usuários é interessante criptografar as senhas do usuários para uma maior confiabilidade e descrição dessas senhas, para isso uma boa opção é o MD5.

Uma senha criptografada com MD5 não pode ser novamente transformada no texto de origem, portanto a comparação deve ser feita por duas strings criptografadas.

Abaixo segue uma classe que vai ajudar na criação de MD5.


import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class ConvertPasswordToMD5 {

	public static String convertPasswordToMD5(String password) throws NoSuchAlgorithmException {
		MessageDigest md = MessageDigest.getInstance("MD5");

		BigInteger hash = new BigInteger(1, md.digest(password.getBytes()));

		return String.format("%32x";, hash);
	}

}

Bom, abaixo segue o código de teste desta classe que criptografa as senhas em MD5.


import java.security.NoSuchAlgorithmException;

public class Test {

	public static void main(String[] args) {
		String password1 = "Senha1";
		String password2 = "Senha2";

		try {
			String password1MD5 = ConvertPasswordToMD5.convertPasswordToMD5(password1);
			String password2MD5 = ConvertPasswordToMD5.convertPasswordToMD5(password2);

			String passwordCompareMD5 = ConvertPasswordToMD5.convertPasswordToMD5(password1);

			System.out.println("Password1: " + password1MD5);
			System.out.println("Password2: " + password2MD5);

			System.out.println("passwordCompareMD5: " + passwordCompareMD5);

			if (password1MD5.equals(passwordCompareMD5)) {
				System.out.println("Compare OK");
			} else {
				System.out.println("Compare NOK");
			}

			if (password2MD5.equals(passwordCompareMD5)) {
				System.out.println("Compare OK");
			} else {
				System.out.println("Compare NOK");
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}
}

As saídas deste teste são:

Password1: be6b9084a5dcdb09af8f433557a2119c
Password2: 14621de3463eb7e1b3606d5514bbf800
passwordCompareMD5: be6b9084a5dcdb09af8f433557a2119c
Compare OK
Compare NOK

Em outro post será abordada a criptografia feita com RSA, onde é possível criptografar e descriptografar.

Até mais.

Esta entrada foi postada em Java.

2 comentários em “Criptografando senhas usando MD5 em Java

  1. Bruno Monti disse:

    Otimo, parabéns, exatamente o que eu precisava!

  2. Bruno Monti disse:

    Olá Danilo

    Poderia postar um exemplo de criptografia utilizando RSA?

    Parabéns pelo blog.

Deixe um comentário