Hashurile sunt formule matematice care preiau un șir de date de lungime variabilă, de obicei sub formă de text, și îl convertesc în valori numerice mai scurte, cu lungime fixă. Hashe-urile sunt folosite frecvent în bazele de date computerizate pentru a face căutările mai rapide și mai eficiente. Ele sunt, de asemenea, utilizate în criptare pentru a se asigura că parolele nu sunt compromise și pentru a autentifica semnăturile digitale, printre alte utilizări. Hashurile poartă, de asemenea, numele de funcții hash și pot fi considerate și algoritmi.
Hashe-urile joacă un rol important în facilitarea căutărilor în bazele de date. Într-o bază de date formată din nume, de exemplu, dacă un utilizator caută „John Doe”, computerul ar trebui să potrivească toate caracterele din căutare cu cele ale fiecărei intrări în baza de date. Fiecare caracter din nume ar avea 26 de posibilități diferite – literele alfabetului englez – în timp ce lungimea variabilă a intrărilor ar încetini, de asemenea, căutarea.
În schimb, aplicarea unei funcții hash ar face viața computerului mult mai ușoară. Transformarea fiecărui șir de text într-o serie de numere ar simplifica căutarea, deoarece computerul ar avea doar zece posibilități de a verifica pentru fiecare caracter: cifre de la „0” la „9”. Lungimea fixă a seriei de numere ajută, de asemenea, computerul să-și facă treaba mai eficient.
Într-o bază de date cu o funcție hash aplicată, toate intrările au un număr unic corespunzător. Aceasta se numește cheie hash. În acest caz, când efectuați o căutare, computerul aplică mai întâi funcția hash la intrarea pe care ați scris-o, cum ar fi „John Doe”. Rezultă o valoare numerică, de exemplu „456789”. Computerul poate potrivi apoi rapid acest rezultat cu cheia hash corespunzătoare intrării corecte.
Hashurile funcționează și ca semnături digitale. De exemplu, un expeditor, Robert, dorește să trimită un document cuiva, iar destinatarul, Mary, dorește să se asigure că documentul nu a fost modificat în timpul drumului. Expeditorul, Robert, trebuie doar să ruleze documentul printr-o funcție hash, care are ca rezultat o valoare numerică. Robert criptează apoi cheia hash și trimite documentul împreună cu cheia criptată.
Mary primește ambele articole și decriptează cheia hash. Ea poate vedea acum valoarea numerică care a rezultat din document înainte de a fi trimis. Pentru a verifica dacă documentul din mâinile ei este exact același, ea rulează documentul printr-o funcție hash pe computerul ei. În cele din urmă, ea compară ambele chei. Dacă sunt aceleași, atunci documentul nu a fost modificat în drumul său către destinatar.
Există multe funcții hash diferite, fiecare cu propriile formule matematice. Pentru ca o funcție hash să funcționeze, trebuie să minimizeze orice coliziune, care apare atunci când două intrări în baza de date au aceeași cheie hash. Funcțiile hash trebuie, de asemenea, să fie unidirecționale. Aceasta înseamnă că puteți produce o cheie dintr-o intrare sau un document în baza de date, dar nu invers. Cu alte cuvinte, nu puteți „reverse engineering” documentul original din cheia hash.