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 2989 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par coramarr dans java

Peut-on trouver des infos sur cette suite qui serait utilise en statistiques. Des documents ou ouvrages qui relatent les divers possibilites d'utilisation de cette suite.
Je suis un particulier ni...

Publié par jadu dans tuto

Et comment met-on en route Xinha lorsque l'extension a été chargée dans Firefox ?????

je n'ai rien trouvé !!!

Publié par Coll dans java

Excuse moi, mais pourrais tu expliquer un peu plus precisement ce que tu fais lorsque tu convertis en gris je comprends l'idee mais pas ce que chaque action fait precisement et le cacth a la fin. Parc...

Publié par Fobec dans php5

Le code PHP sur les boucles a ete corrige dans l'article.
Merci Etiazam !

Publié par eldiablo dans java

Malheureusement, ce code n'est pas correct.
Cette classe accepte des dates comme : "31/00/2011"