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

Publié par Absolut dans news

Bonjour,
Dans l'outil de localisation d'IP, je ne comprends pas le sens de la rubrique precision dans le Rapport d'analyse de l'adresse IP ex 1/10, 9/10, bonne, ....
Merci

Publié par Fobec dans php5

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

Publié par Christof dans CMS

Je pense qu'il y a un problème au niveau de l'affectation du longint "Color" dans la
variable de type byte "r". A mon avis, cela risque de provoquer une erreur de
vé...

Publié par Pierrot dans CMS

Je présume que c'est plutot application.terminate;, le clavier à fourcher, ça m'arrive souvent.
@+

Publié par Quentin dans tuto

Merci pour ces petits codes java script qui me sont d'un grand secours pour mon TP :)