O funcție hash este o procedură matematică ce primește orice date, de la un singur cuvânt la un film întreg, și produce un rezultat scurt, de lungime fixă, numit hash, rezumat sau amprentă. Ca amprenta unui deget, rezultatul identifică datele fără să le conțină: aceleași date dau mereu aceeași amprentă, iar o modificare cât de mică dă o amprentă complet diferită.
Funcțiile hash sunt printre cele mai folosite unelte din informatică, deși rareori le vezi. Ele verifică dacă un fișier descărcat este intact, păstrează parolele pe servere fără ca acestea să fie stocate citibil, stau la baza semnăturilor digitale și leagă blocurile unui blockchain. Mai jos afli cum funcționează, ce proprietăți trebuie să aibă, care algoritmi mai sunt siguri și ce nu poate face o funcție hash.
Ce este o funcție hash
O funcție hash este o „mașină de tocat” deterministă: intră orice, iese un număr cu un număr fix de biți. Rezultatul este scris de obicei în baza 16 (hexazecimal), cu cifrele 0–9 și literele a–f, fiecare caracter reprezentând 4 biți.
Algoritmul SHA-256, de exemplu, produce mereu 256 de biți, adică 64 de caractere hexazecimale, indiferent dacă intrarea are un octet sau o sută de gigaocteți. Amprenta cuvântului „mar” și cea a cuvântului „măr” nu au nimic în comun vizibil, deși diferă o singură literă.
O analogie din bucătărie
Gândește-te la un smoothie. Dacă pui în blender exact aceleași fructe, în aceleași cantități, obții de fiecare dată același gust și aceeași culoare. Dacă adaugi o singură boabă de afine, culoarea se schimbă vizibil. Și, oricât te-ai strădui, nu poți reface din pahar fructele întregi. Funcțiile hash fac același lucru, dar cu precizie absolută: amprenta este identică bit cu bit pentru aceeași intrare.
Funcții hash obișnuite și funcții hash criptografice
Nu orice funcție hash are pretenții de securitate. Funcțiile hash obișnuite, folosite în programare pentru a găsi rapid un element într-o listă, trebuie doar să fie rapide și să împrăștie uniform valorile. Funcțiile hash criptografice trebuie, în plus, să reziste unui adversar care încearcă intenționat să găsească amprente identice sau să ghicească intrarea. Restul articolului se referă mai ales la acestea.
Proprietățile unei funcții hash criptografice
O funcție hash criptografică bună are cinci proprietăți esențiale, iar dacă oricare dintre ele cade, algoritmul este considerat compromis pentru utilizările de securitate.
| Proprietate | Ce înseamnă | De ce contează |
|---|---|---|
| Determinism | aceeași intrare dă mereu aceeași amprentă | permite verificarea ulterioară |
| Efect de avalanșă | un bit schimbat modifică aproximativ jumătate din biții amprentei | nicio modificare nu trece neobservată |
| Rezistență la preimagine | din amprentă nu se poate găsi intrarea | protejează parolele și datele ascunse |
| Rezistență la a doua preimagine | pentru o intrare dată, nu se poate găsi alta cu aceeași amprentă | un document nu poate fi înlocuit cu unul fals |
| Rezistență la coliziuni | nu se pot găsi două intrări oarecare cu aceeași amprentă | semnăturile digitale rămân de încredere |
Coliziunile există, dar nu trebuie să poată fi găsite
Pentru că numărul de intrări posibile este infinit, iar numărul de amprente este finit, coliziunile există obligatoriu: undeva, două intrări diferite au aceeași amprentă. Este principiul cutiei: dacă ai mai mulți porumbei decât cuști, cel puțin o cușcă va avea doi porumbei. Cerința de securitate nu este ca coliziunile să nu existe, ci ca nimeni să nu le poată găsi cu un efort realist. Pentru o amprentă de 256 de biți, ai avea nevoie, în medie, de aproximativ 2 la puterea 128 de încercări, un număr de neatins.
Familii de algoritmi: care mai sunt sigure
Algoritmii hash îmbătrânesc: pe măsură ce cercetătorii găsesc scurtături matematice și calculatoarele devin mai puternice, unii devin nesiguri pentru securitate. Iată situația celor mai cunoscuți.
| Algoritm | Lungimea amprentei | Stare pentru securitate | Unde îl mai întâlnești |
|---|---|---|---|
| MD5 | 128 de biți (32 de caractere hex) | spart, coliziuni găsite ușor | sume de control vechi, fără rol de securitate |
| SHA-1 | 160 de biți (40 de caractere) | spart, coliziuni demonstrate practic | sisteme vechi, în retragere |
| SHA-256 / SHA-512 (familia SHA-2) | 256 / 512 biți | sigur | certificate, semnături, blockchain, verificări de fișiere |
| SHA-3 | 224–512 biți | sigur, construcție diferită | alternativă standardizată la SHA-2 |
| BLAKE2 / BLAKE3 | variabilă | sigur, foarte rapid | programe moderne, verificări rapide |
Familiile SHA-2 și SHA-3 sunt standardizate de institutul american de standarde NIST și folosite pe scară largă în întreaga lume. MD5 și SHA-1 mai pot servi pentru a detecta erori accidentale de transmisie, dar nu trebuie folosite acolo unde un adversar ar avea interes să falsifice datele.
Important: Faptul că un algoritm vechi apare încă pe un site ca „sumă de control” nu înseamnă că este greșit pentru acel scop. Contează dacă amprenta trebuie să reziste doar la erori întâmplătoare sau și la falsificare intenționată.
Verificarea integrității fișierelor
Cea mai la îndemână utilizare a funcțiilor hash este verificarea că un fișier descărcat este exact cel publicat de autor. Mulți dezvoltatori de software afișează pe pagina de descărcare amprenta SHA-256 a fiecărui fișier.
Pașii verificării
- Descarcă fișierul de pe site-ul oficial al proiectului.
- Notează amprenta SHA-256 publicată pe aceeași pagină sau, mai bine, într-un fișier semnat digital.
- Calculează amprenta fișierului descărcat cu un utilitar din linia de comandă a sistemului tău de operare; toate sistemele moderne au o comandă dedicată pentru SHA-256.
- Compară cele două șiruri. Nu e nevoie să le citești pe tot: diferența apare de obicei din primele caractere, dar verifică măcar începutul și sfârșitul.
- Dacă diferă, nu deschide fișierul: e corupt sau a fost înlocuit.
Limita metodei
Dacă un atacator controlează site-ul de unde descarci, poate înlocui atât fișierul, cât și amprenta afișată. Amprenta te apără de descărcări corupte și de oglinzi compromise, dar pentru a fi sigur de autor ai nevoie de o semnătură digitală, explicată în ghidul despre criptografie.
Sfat: Când copiezi o amprentă pentru comparație, lipește-o în aceeași fereastră de text cu amprenta calculată, una sub alta. Ochii prind mult mai ușor o diferență când caracterele sunt aliniate.
Cum stochează site-urile parolele
Un site bine construit nu păstrează parola ta, ci doar o amprentă a ei, calculată cu o funcție special concepută pentru parole. La autentificare, site-ul calculează amprenta parolei pe care ai tastat-o și o compară cu cea stocată. Dacă baza de date este furată, hoții obțin amprente, nu parole.
Sarea: ingredientul care face diferența
Dacă două persoane au aceeași parolă, ar avea aceeași amprentă, iar atacatorii ar putea folosi tabele precalculate cu amprentele a milioane de parole frecvente (numite rainbow tables). Soluția este sarea (salt): un șir aleatoriu, unic pentru fiecare cont, adăugat la parolă înainte de calcul. Sarea nu e secretă, dar face ca fiecare amprentă să fie diferită și tabelele precalculate să devină inutile.
Funcții lente intenționat
Pentru parole, viteza mare este un defect: un atacator cu plăci grafice puternice poate încerca miliarde de amprente SHA-256 pe secundă. De aceea se folosesc funcții de derivare a cheilor, încetinite deliberat și, uneori, mari consumatoare de memorie, precum bcrypt, scrypt sau Argon2. O verificare durează o fracțiune de secundă pentru tine, dar înmulțită cu miliarde de încercări devine prohibitivă pentru atacator.
| Metodă de stocare | Ce obține atacatorul la o scurgere de date | Nivel de protecție |
|---|---|---|
| Parolă în clar | parolele direct | niciunul |
| Hash rapid, fără sare | parolele frecvente aproape instant, prin tabele | foarte slab |
| Hash rapid, cu sare | trebuie să ghicească parolă cu parolă, dar foarte repede | slab spre mediu |
| Funcție lentă cu sare | ghicire foarte lentă, pe fiecare cont separat | bun |
Totuși, nicio funcție nu salvează o parolă de tipul „parola123”, ghicită din primele încercări. De aceea parolele lungi și unice rămân esențiale, cum explicăm în ghidul despre parole puternice și managerele de parole.

Hash-urile în semnăturile digitale și în blockchain
Semnăturile digitale nu semnează documentul întreg, ci amprenta lui. Este mult mai eficient să semnezi 256 de biți decât sute de pagini, iar securitatea rămâne aceeași, cu condiția ca funcția hash să reziste la coliziuni. Dacă un atacator ar putea crea două documente cu aceeași amprentă, unul nevinovat și unul fraudulos, ar putea obține semnătura pe primul și ar folosi-o pentru al doilea. Exact acesta a fost motivul pentru care MD5 și SHA-1 au fost retrase din certificatele digitale.
În blockchain, fiecare bloc conține amprenta blocului anterior. Modificarea unei tranzacții vechi i-ar schimba amprenta, ceea ce ar rupe legătura cu blocul următor și cu toate cele de după. Funcțiile hash sunt folosite și în mecanismul de consens numit „dovadă de lucru”, în care participanții caută o amprentă care începe cu un anumit număr de zerouri. Detalii în ghidul despre blockchain.
Arborii de amprente
O tehnică ingenioasă este arborele Merkle: amprentele multor elemente sunt grupate două câte două, se calculează amprenta fiecărei perechi și așa mai departe, până rămâne o singură amprentă-rădăcină. Cu ea poți dovedi că un element face parte dintr-un set uriaș prezentând doar câteva amprente intermediare, nu întregul set. Arborii Merkle sunt folosiți în blockchain, în sistemele de control al versiunilor pentru cod și în sincronizarea eficientă a fișierelor.
Alte utilizări: deduplicare, tabele hash, detectarea modificărilor
Funcțiile hash apar și în locuri mai puțin vizibile, unde ajută la economisirea spațiului și a timpului.
- Deduplicarea în stocare: serviciile de stocare pot calcula amprenta fiecărui bloc de date și păstrează o singură copie din blocurile identice. Despre unde ajung fizic fișierele găsești mai multe în articolul despre stocarea în cloud.
- Tabelele hash: structuri de date care găsesc o valoare aproape instant, folosind amprenta cheii ca adresă. Stau la baza indexurilor din multe baze de date.
- Detectarea modificărilor: programele de backup și de sincronizare compară amprentele fișierelor ca să trimită doar ce s-a schimbat.
- Identificarea conținutului cunoscut: programele antivirus compară amprentele fișierelor cu liste de amprente ale programelor malițioase deja identificate.
- Verificarea copiilor de probă: în expertizele informatice, amprenta unui disc copiat dovedește că dovada nu a fost modificată ulterior.
Există și amprente perceptuale, folosite pentru imagini și sunete, care funcționează invers: dau rezultate asemănătoare pentru conținut asemănător, ca să recunoască aceeași poză redimensionată sau recomprimată. Ele nu sunt funcții hash criptografice și au alt scop.
Ce nu poate face o funcție hash
O funcție hash nu este o metodă de criptare și nu ascunde automat datele. Confuzia este frecventă și duce la greșeli de proiectare.
- Nu se poate „decripta”: amprenta nu conține datele, deci nu există cheie care să le refacă. Serviciile online care pretind că „decriptează” hash-uri doar caută amprenta în baze uriașe de valori deja calculate.
- Nu protejează datele previzibile: dacă intrarea face parte dintr-un set mic, precum numerele de telefon sau codurile numerice personale, un atacator poate calcula amprentele tuturor valorilor posibile și le poate compara. O listă de numere de telefon „anonimizată” cu un hash simplu nu este, de fapt, anonimă.
- Nu dovedește autorul: oricine poate calcula amprenta unui fișier. Pentru a dovedi cine l-a publicat e nevoie de o semnătură digitală.
- Nu micșorează datele recuperabil: amprenta e scurtă, dar nu este o formă comprimată; pentru asta există tehnicile din ghidul despre compresia datelor.
Pentru a vedea cum se leagă funcțiile hash de restul mecanismelor, de la biți la aplicații, citește ghidul despre tehnologia digitală.
Pe scurt, despre amprenta datelor
Funcțiile hash transformă orice volum de date într-o amprentă scurtă, mereu aceeași pentru aceeași intrare și complet diferită la cea mai mică modificare. Ele nu ascund și nu comprimă datele, dar permit verificări extrem de rapide de integritate și stau la temelia parolelor stocate corect, a semnăturilor digitale și a registrelor distribuite.
De reținut:
- amprenta are lungime fixă, indiferent de mărimea datelor;
- MD5 și SHA-1 nu mai sunt sigure pentru securitate; SHA-256, SHA-3 și BLAKE sunt;
- parolele se stochează cu sare și funcții lente, nu cu hash-uri rapide;
- o amprentă publicată verifică integritatea, o semnătură verifică și autorul;
- un hash simplu nu anonimizează datele previzibile.
Întrebări frecvente
Se poate afla parola dintr-un hash?
Nu direct, pentru că amprenta nu conține parola. Atacatorii pot însă ghici: calculează amprentele multor parole probabile și le compară, motiv pentru care parolele scurte sau des folosite sunt găsite rapid.
Ce diferență este între hash și criptare?
Criptarea este reversibilă cu cheia potrivită, iar hash-ul este o transformare într-un singur sens. Criptarea ascunde datele ca să poată fi citite mai târziu de cine are cheia; hash-ul creează doar o amprentă pentru comparații.
De ce două fișiere diferite nu au aceeași amprentă SHA-256?
Teoretic pot avea, dar probabilitatea este atât de mică încât nimeni nu a găsit vreodată o astfel de pereche. Pentru a găsi una intenționat ar fi nevoie de un efort de calcul imposibil cu tehnologia existentă.
Mai este bun MD5 pentru ceva?
Poate detecta erori accidentale, de exemplu un fișier corupt la copiere. Nu trebuie folosit acolo unde cineva ar avea interes să falsifice datele, pentru că se pot construi intenționat fișiere diferite cu aceeași amprentă MD5.
Ce este sarea în stocarea parolelor?
Sarea este un șir aleatoriu, unic pentru fiecare cont, adăugat parolei înainte de calcularea amprentei. Face ca două parole identice să aibă amprente diferite și anulează tabelele precalculate folosite de atacatori.






