md5 în PHP

Calculează amprenta MD5 a unui text: 32 de caractere hexazecimale. Bună pentru sume de control, nu pentru parole.

Sintaxă
md5(string $string, bool $binary = false): string

Ce face md5

md5 transformă orice text într-o amprentă de lungime fixă (32 de caractere). Același text dă mereu aceeași amprentă, iar o mică schimbare dă o amprentă complet diferită. Este folosită pentru verificarea integrității fișierelor, chei de cache sau detectarea duplicatelor.

MD5 este considerat nesigur pentru securitate: se pot construi două texte diferite cu aceeași amprentă, iar amprentele parolelor comune se găsesc în tabele publice. Pentru parole folosește password_hash, iar pentru semnături hash_hmac.

md5_file($fisier) calculează amprenta conținutului unui fișier, fără să îl citești tu în memorie.

Parametri

Parametru Descriere
$string Textul pentru care se calculează amprenta.
$binary Opțional. true returnează 16 octeți binari în loc de 32 de caractere hexazecimale.

Ce returnează

Amprenta MD5, ca text de 32 de caractere hexazecimale.

Exemple

Exemplul 1: Amprenta unui text

<?php
echo md5("dexblog") . "\n";
echo md5("Dexblog") . "\n";
echo strlen(md5("orice text, oricât de lung"));

Rezultat

eef1771a1990919bae19d3cba1128be6
06f4985dcc100256177483c7688a1519
32

Exemplul 2: Verificarea unui fișier cu md5_file

<?php
file_put_contents("backup.sql", "INSERT INTO clienti VALUES (1, 'Ana');");
$amprenta = md5_file("backup.sql");
echo $amprenta . "\n";

// mai târziu, după copiere
var_dump(md5_file("backup.sql") === $amprenta);

Rezultat

ba37b6fbcbdc1f8ae2d2671c1d888883
bool(true)

Exemplul 3: Cheie de cache dintr-o cerere

<?php
$parametri = ["oras" => "Iași", "pagina" => 2];
$cheie = "cautare_" . md5(json_encode($parametri));

echo $cheie;

Rezultat

cautare_643e27e624fb4e04a003a6765f75d4a8

Greșeli frecvente

  • Salvezi parolele cu md5($parola). Amprentele parolelor uzuale se găsesc în câteva secunde. Folosește password_hash.
  • Încerci să „decriptezi” un MD5. Amprenta nu poate fi inversată; poate fi doar comparată cu amprenta unui text cunoscut.

Comenzi înrudite

  • sha1: Calculează amprenta SHA-1 a unui text: 40 de caractere hexazecimale. Nu mai este recomandată pentru securitate.
  • hash: Calculează amprenta unui text cu algoritmul ales: sha256, sha512, sha3-256, xxh3 și multe altele.
  • password_hash: Creează un hash sigur pentru o parolă, gata de salvat în baza de date. Este modul corect de a stoca parole.
  • crc32: Calculează suma de control CRC32 a unui text, ca număr întreg. Rapidă, dar doar pentru detectarea erorilor.