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

Publié par foufou0406 dans CMS

merci !!!

Publié par Jacques dans CMS

Cette méthode produit une gamme de gris qui ne tient pas compte des caractéristiques de la vision humaine.
En vidéo on utilise la fonction luminance qui représente mieux les jaunes e...

Publié par Toluar dans tuto

Je viens de lire votre article que seulement aujourd'hui.
Une autre solution consiste a regarder le user-agent utilise par le navigateur du visiteur. Les crawlers sont clairement identifies ;-)...

Publié par Arthur dans java

Salut!
J'ai repris ton code pour un projet mais en testant le programme rien ne s'affiche. Pourquoi ?
Dois-je mettre a jour quelque chose ? Importer ?
La seule modification que j'...

Publié par Fobec dans tuto

Je ne maitrise pas du tout WordPress ...
un plugin a l'air sympa http://wordpress.org/extend/plugins/scripts-gzip/, en parcourant le code source, j'ai vu des pistes pour integrer Gzip sous WordPre...