Comment obtenir un hash MD5 d'une chaîne en Java ?

Il est possible de créer un hash en MD5 avec le langage Java soit avec des méthodes natives de Java, soit avec des librairies externes.

Le MD5 est un algorithme utilisé pour hasher les mots de passe. Il permet de sécuriser davantage un site en transformant une information en chaîne de caractères que l'on ne peut pas retrouver en effectuant l'opération inverse. Il est possible de créer un hash en MD5 avec le langage Java soit avec des méthodes natives de Java, soit avec des librairies externes.

La classe MessageDigest de la librairie java.security permet de créer une instance utilisée pour hasher des bytes avec l'algorithme MD5. La méthode getInstance() crée l'instance de la classe qui va hasher les bytes. Vous obtenez le hash en appelant la méthode digest(). Cette méthode prend un tableau de byte en paramètre. Vous pouvez facilement passer d'une chaîne de caractères à un tableau de byte avec la méthode getBytes() de la classe String. Il faut indiquer en paramètre l'encodage de la chaîne sinon celui par défaut de la plateforme sera utilisé.

import java.security.*;
byte[] byteChaine = maChaine.getBytes(UTF-8);
MessageDigest md = MessageDigest.getInstance(MD5);
byte[] hash = md.digest(byteChaine);

Si vous devez traiter un important lot de données, vous pouvez utiliser la méthode update() de la classe MessageDigest. Une fois toutes les données ajoutées, un appel de la méthode digest() sans paramètre permet d'obtenir le hash.

import java.security.*;
byte[] byteChaine = maChaine.getBytes(UTF-8);
MessageDigest md = MessageDigest.getInstance(MD5);
md.update(byteChaine);
byte[] hash = md.digest();

La fondation Apache propose la librairie Apache Commons codec (http://commons.apache.org/proper/commons-codec/). Cette librairie contient des encodeurs et décodeurs pour différents format de cryptage et de hashage dont le MD5. La classe DigestUtils contient les méthodes nécessaires pour créer un hash en MD5.

Java