În criptografie, hashurile sunt adesea folosite ca suporturi pentru mesajul original; prin utilizarea hash-ului, folosim efectiv mesajul original. De exemplu, atunci când semnăm un mesaj lung, indexăm mesajul lung și apoi rulăm algoritmul de semnătură pe hash; dacă presupunem că algoritmul de semnătură este puternic (și deci doar un mesaj care generează acel hash va fi validat), și presupunem că este greu de găsit un al doilea mesaj care să genereze același hash (deci trebuie să fie acel mesaj original care a fost semnat), atunci întregul sistem este puternic.
Ca atare, în general, nu luăm în considerare „scurgerea de informații” atunci când vorbim despre funcțiile hash; adică, în general, nu ne facem griji dacă examinarea ieșirii hash ar scurge informații despre mesajul original. În schimb, ne facem griji cu privire la dificultatea de a găsi un mesaj care generează acel hash (fie rezistență preimagine, rezistență a doua preimagine sau rezistență la coliziune), deoarece asta se referă direct la ipotezele de securitate de care avem nevoie în mod obișnuit de la funcțiile hash.
Acestea fiind spuse, dacă cineva ar găsi o scurgere în (să zicem) SHA3, de exemplu, examinând hash-ul, putem determina lungimea mesajului, ei bine, asta ar fi destul de îngrijorător (și probabil am începe să depreciem SHA3). ); uneori vrem să tratăm funcțiile noastre hash ca pe un oracol aleatoriu, iar asta ar indica că nu acționează ca unul [1]. Cu toate acestea, perspectiva unei astfel de scurgeri ar părea a fi puțin probabilă.
[1]: Da, știu că atacurile de extensie de lungime arată că SHA-2 nu acționează ca un oracol aleatoriu; acest lucru este bine înțeles și pur și simplu evităm să folosim SHA-2 într-un mod în care acel atac specific este aplicabil.