md5()
Article sur la fonction PHP md5(), qui calcule le hachage MD5 d'une chaîne. Syntaxe, paramètres, exemples et cas d'utilisation.
La fonction PHP md5() calcule le hachage MD5 d'une chaîne. MD5 (Message-Digest Algorithm 5) est une fonction à sens unique : elle transforme n'importe quelle entrée en une valeur fixe de 128 bits, et il est impossible de retrouver la chaîne d'origine à partir du résultat. Cette page couvre la syntaxe, les paramètres, des exemples exécutables, les cas où MD5 reste approprié, et ceux où vous devez utiliser quelque chose de plus sûr.
Syntaxe
md5(string $str, bool $raw_output = false): stringLa fonction accepte deux paramètres :
$str— la chaîne d'entrée à hacher.$raw_output— booléen optionnel. Lorsqu'il vautfalse(par défaut),md5()retourne une chaîne hexadécimale en minuscules de 32 caractères. Lorsqu'il vauttrue, il retourne le hachage binaire brut de 16 octets.
La valeur de retour a toujours la même longueur pour un mode donné, quelle que soit la longueur de l'entrée — une chaîne d'un caractère et un fichier d'un mégaoctet produisent tous deux un condensé hexadécimal de 32 caractères.
Exemple de base
Ici, $string contient du texte et md5() retourne son condensé hexadécimal. La sortie est la chaîne hexadécimale de 32 caractères :
ed076287532e86365e841e92bfc50d8cLa même entrée produit toujours le même condensé, donc MD5 est déterministe — utile pour comparer ou indexer des données, mais cela signifie également qu'un attaquant peut précalculer les hachages de valeurs courantes.
Sortie binaire brute
<?php
$hash = md5("Hello World!", true);
echo bin2hex($hash);
?>Lorsque $raw_output vaut true, md5() retourne le hachage binaire brut de 16 octets au lieu de l'hexadécimal. C'est la moitié de la taille de la forme hexadécimale, ce qui est pratique lorsque vous stockez le condensé dans une colonne de base de données BINARY(16). Ici, nous le passons à bin2hex() pour l'afficher, donc la sortie est identique au mode par défaut :
ed076287532e86365e841e92bfc50d8cQuand utiliser MD5 (et quand ne pas l'utiliser)
MD5 est rapide mais cryptographiquement cassé — des collisions (deux entrées différentes avec le même hachage) peuvent être produites délibérément. Choisissez selon le cas d'utilisation :
- OK : sommes de contrôle rapides non liées à la sécurité, clés de cache, déduplication de fichiers, ou correspondance avec un système existant qui stocke déjà des condensés MD5.
- Pas OK : stockage de mots de passe et signatures numériques. Utilisez
password_hash()pour les mots de passe, ethash('sha256', ...)ou plus fort pour l'intégrité qu'un attaquant pourrait cibler.
<?php
// Bad — never store passwords like this:
$bad = md5($password);
// Good — purpose-built, salted, slow on purpose:
$good = password_hash($password, PASSWORD_DEFAULT);Avertissement : N'utilisez pas
md5()pour le hachage de mots de passe ou les signatures numériques. Il est uniquement approprié pour les sommes de contrôle non liées à la sécurité ou la compatibilité avec des systèmes existants.
Fonctions associées
sha1()— produit un hachage plus long de 160 bits ; également plus résistant aux collisions.crc32()— une somme de contrôle rapide de 32 bits pour la détection d'erreurs, pas pour le hachage.bin2hex()— convertit la sortie binaire brute demd5(..., true)en une chaîne hexadécimale lisible.