W3docs

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): string

La fonction accepte deux paramètres :

  • $str — la chaîne d'entrée à hacher.
  • $raw_output — booléen optionnel. Lorsqu'il vaut false (par défaut), md5() retourne une chaîne hexadécimale en minuscules de 32 caractères. Lorsqu'il vaut true, 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

php— editable, runs on the server

Ici, $string contient du texte et md5() retourne son condensé hexadécimal. La sortie est la chaîne hexadécimale de 32 caractères :

ed076287532e86365e841e92bfc50d8c

La 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 :

ed076287532e86365e841e92bfc50d8c

Quand 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, et hash('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 de md5(..., true) en une chaîne hexadécimale lisible.

Pratique

Pratique
Quelle est la fonction principale de la fonction md5() en PHP ?
Quelle est la fonction principale de la fonction md5() en PHP ?
Was this page helpful?