Publié le 30/08/2010
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Calculer un Digest MD5 d'un String

L'encodage MD5 est souvent utilisé pour hasher un mot de passe, c'est à dire créer une empreinte d'une texte. Inventé par Ronald Rivest en 1991, le MD5 (Message Digest 5) est une fonction de hachage qui calcule une empreinte de 128 bits ou 32 caractères hexadécimale à partir d'un texte.

Calculer l'empreinte MD5

Pour trouver la représentation MD5 d'un texte, on peut utiliser la librairie MessageDigest inclue dans JAVA. La fonction de hashage stocke l'empreinte dans un tableau de byte. Pour rendre le MD5 compréhensible, une boucle a été ajoutée à la class pour obtenir une représentation hexadecimal du Digest.

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 * Calculer une empreinte MD5 d'un string
 * http://www.fobec.com/java/985/calculer-digest-md5-string.html
 * Axel 2010
 */
public class HashUtils {
 
    public static String MD5(String text) throws NoSuchAlgorithmException {       
            byte[] toHash = text.getBytes();
            byte[] MD5Digest = null;
            StringBuilder hashString = new StringBuilder();
 
            //Calculer le MD5
            MessageDigest algo = MessageDigest.getInstance("MD5");
            algo.reset();
            algo.update(toHash);
            MD5Digest = algo.digest();
 
            //Créer un représentation hexadecimal du Digest
            for (int i = 0; i < MD5Digest.length; i++) {
                String hex = Integer.toHexString(MD5Digest[i]);
                if (hex.length() == 1) {
                    hashString.append('0');
                    hashString.append(hex.charAt(hex.length() - 1));
                } else {
                    hashString.append(hex.substring(hex.length() - 2));
                }
            }
            return hashString.toString();       
    }
 
    /**
     * Exemple de hashage MD5
     * @param args
     */
    public static void main(String[] args) {
        try {
            String phrase = "Hello world !";
            System.out.println("texte à encoder: " + phrase);
            System.out.println("MD5: " + HashUtils.MD5(phrase));
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(HashUtils.class.getName()).log(Level.SEVERE, null, ex);
        }   
    }
}

Le hashage MD5 est principalement connu pour convertir les mots de passe en une empreinte que l'on stocke dans la base de donnée. Un autre utilisation de l'algo est la comparaison de texte. En effet, bien que plusieurs textes peuvent produire la meme empreinte MD5, le hashage est utilisé pour améliorer les performances des algo de tri.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
30/08/2010
Visualisation
vu 3010 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par fffffff dans CMS

tesffff

Publié par MasterMbg dans java

Salut! merci pour le code, si tu y ajoutais des commentaires avant chaque module ce serait encore plus facilitant! merci infiniment...

Publié par fredouille dans java

Il ne faut pas oublier de mettre aussi System.setErr(printStream); pour ne pas oublier les printStackTrace() declenches par le catch

Publié par Oscar dans java

Je vous remercie pour ce tuto il ma permis non seulement de gerer les couleurs dans les cellules mais aussi de positionner son contenu texte.

Publié par Fobec dans logiciel

Souhaitez-vous d'informations sur le logiciel foWhoisClient ou sur l'utilisation des Whois ?