Questions courantes

La réponse aux questions les plus courantes sur MD5 ?



Faut-il utiliser MD5 pour stocker ses mots de passe ?

MD5 n'est pas réputé sur depuis près de 10 ans. C'est en effet un des algorithmes avec le plus de collision qui existe. De plus, les super ordinateur actuels peuvent tester près de 180 millions de millions de hash par seconde pour décoder un mot de passe hashé. Il y a environ 26^7 = 8 milliars de mot de passe avec 7 caractères en minuscules. Pour décoder un tel mot de passe, cela prend donc 44 secondes. De plus, de nombreux dictionnaires de hash existe, et chaque hash peut donc être trouvé en quelques millisecondes.

MD5 n'est donc absolument pas sur ! Il est recommandé d'utiliser bcrypt !

Peut-on déchiffrer des hash MD5 ?

Non, MD5 n'est pas de l'encryption, c'est une fonction de hash. Le texte original est perdu dans le processus. Cependant, il est possible de trouver facilement un texte qui donne le même hash !

Le nombre possible de MD5 différent est de 2^128. Ce nombre est fini, et le nombre de chaine de caractère possible en entrée est infini. Il existe donc des hashs équivalents pour des chaines différentes. Comparons cela à la fonction modulo 10 : nous pouvons passer n'importe quel nombre en entrée à cette fonction, mais le résultat sera toujours compris entre 0 et 9. Ainsi si le résultat est 3, je ne sais pas si le nombre de départ est 3, 13, 23, etc. Mais dans tous les cas, tous ces nombres seront validés comme mot de passe.

Par ailleurs, on a trouvé des faiblesses dans cet algorithme : par exemple avec des fonctions spécifiques, il est possible de trouver une collision sans tester les 2^128 possibilités. Ajoutons à cela que les mots de passe les plus courants peuvent être facilement deviné, et qu'il existe même des dictionnaires pour connaitre un texte d'entrée pour n'importe quel hash. Vous pouvez ainsi être certain que l'algorithme MD5 n'est aujourd'hui pas sur.

On dit hacher ou crypter ? Pourquoi utilisez-vous le mot crypter ?

Le cryptage (ou crypter) est l'action de transformer un texte de façon à ce qu'une personne possédant la clé de décryptage puisse la lire. Le hachage hache le texte et le transforme dans une longueur fixe. Il peut donc y avoir des collisions : plusieurs textes peuvent donner le même hash. Il n'est donc pas possible de retrouver le texte d'origine à partir du hash. MD5 est donc une fonction de hachage !

On utilise parfois le mot crypter pour des raisons de référencement : on apparait ainsi sur Google, et les personnes qui souhaitent hacher en md5 nous trouve même lorsqu'elles chercher les mots clés "crypter md5".

Comment utiliser MD5 en PHP ?

$text = 'mon mot de passe';
$text_hashed = md5($text);

Comment utiliser MD5 en Java ?

import java.security.*;

..

String yourString = "mon mot de passe";
byte[] bytesOfMessage = yourString.getBytes("UTF-8");

MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage); 
// Le hash est présent sous forme de tableau de byte

BigInteger bigInt = new BigInteger(1,thedigest);
String hashtext = bigInt.toString(16);
while(hashtext.length() < 32 ){
  hashtext = "0"+hashtext;
}
// Le hash est présent sous la forme de String

Comment utiliser MD5 en Ruby ?

require 'digest/md5'
Digest::MD5.hexdigest('mon mot de passe')

Comment utiliser MD5 en Node.JS ?

var crypto = require('crypto');
var name = 'mon mot de passe';
var hash = crypto.createHash('md5').update(name).digest('hex');

Comment utiliser MD5 en Python ?

import hashlib
m = hashlib.md5()
m.update("mon mot de passe")
print m.hexdigest()

Comment vérifier si un document a été modifié en C# ?

Lorsqu'un document est modifié, son checksum MD5 est modifié (sauf collision dans de très rare cas). Vous pouvez alors vérifier si un document a été modifié en comparant le hash que vous possédiez avec son hash actuel.

using System.IO;
using System.Security.Cryptography;

using (var md5 = MD5.Create())
{
    using (var stream = File.OpenRead(filename))
    {
        return md5.ComputeHash(stream);
    }
}

Retour à l'accueil

Une production In Media Veritas | Réseau : md5.fr - sha1.fr - sha256.fr - sha512.fr - bcrypt.fr - htpasswd.fr