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

Publié par Connan dans php5

j'utilise mysql phpmyadmin et j'ai cree une table IP mais j'ai mis varchart(15) mais quese qui faut que je fasse pour stocker l'ip des joueurs qui s'inscrivent

Publié par hungerGames dans php5

Salut!
je suis un debutant en php,et lorsque j'ai execute le code
sur la creation de la base 'member',on m'a affiche cet message:
"Undefined class constant 'ATT_ERRMOD...

Publié par ric dans CMS

c\'est la première fois que j\'utilise ce logiciel

Publié par dieteticien-lyon dans CMS

Il existe aussi programme-dietetique.com qui est pas mal et au niveau fonctionnalit&Atilde;&copy;

Publié par Tytydodo dans java

Top cool merci cela ma super aide!!!