Haši so matematične formule, ki vzamejo niz podatkov spremenljive dolžine, običajno v obliki besedila, in ga pretvorijo v krajše številčne vrednosti s fiksno dolžino. Haši se pogosto uporabljajo v računalniških bazah podatkov, da bi bilo iskanje hitrejše in učinkovitejše. Uporabljajo se tudi pri šifriranju za zagotovitev, da gesla niso ogrožena, in za preverjanje pristnosti digitalnih podpisov, med drugim. Haši se imenujejo tudi hash funkcije in jih lahko štejemo tudi za algoritme.
Haši igrajo veliko vlogo pri olajšanju iskanja baze podatkov. V bazi podatkov, ki je sestavljena iz imen, na primer, če uporabnik išče »John Doe«, bi moral računalnik vse znake v iskanju ujemati s tistimi v vsakem vnosu baze podatkov. Vsak znak v imenu bi imel 26 različnih možnosti – črke angleške abecede –, spremenljiva dolžina vnosov pa bi tudi upočasnila iskanje.
Nasprotno pa bi uporaba hash funkcije bistveno olajšala življenje računalnika. Pretvorba vsakega besedilnega niza v niz številk bi poenostavila iskanje, ker bi imel računalnik le deset možnosti za preverjanje vsakega znaka: števke od »0« do »9«. Fiksna dolžina niza številk pomaga tudi, da računalnik učinkoviteje opravlja svoje delo.
V bazi podatkov z uporabljeno hash funkcijo imajo vsi vnosi ustrezno edinstveno številko. To se imenuje hash ključ. V tem primeru, ko opravite iskanje, računalnik najprej uporabi zgoščeno funkcijo za vnos, ki ste ga napisali, na primer »John Doe«. Posledica tega je številska vrednost, na primer »456789«. Računalnik lahko nato ta rezultat hitro poveže s zgoščevalnim ključem, ki ustreza pravilnemu vnosu.
Haši delujejo tudi kot digitalni podpisi. Na primer, pošiljatelj Robert želi nekomu poslati dokument, prejemnik Mary pa se želi prepričati, da dokument ni bil spremenjen med potjo. Pošiljatelj, Robert, mora dokument zagnati samo prek hash funkcije, ki ima za posledico številsko vrednost. Robert nato šifrira hash ključ in pošlje dokument skupaj s šifriranim ključem.
Mary prejme oba predmeta in dešifrira hash ključ. Zdaj lahko vidi številčno vrednost, ki je nastala iz dokumenta, preden je bil poslan. Da bi preverila, ali je dokument v njenih rokah popolnoma enak, dokument zažene s pomočjo hash funkcije v svojem računalniku. Nazadnje primerja oba ključa. Če sta enaka, potem dokument ni bil spremenjen na poti do prejemnika.
Obstaja veliko različnih hash funkcij, od katerih ima vsaka svoje matematične formule. Da bi zgoščena funkcija delovala, mora minimizirati morebitne kolizije, do katerih pride, ko imata dva vnosa baze podatkov enak ključ. Hash funkcije morajo biti tudi enosmerne. To pomeni, da lahko ustvarite ključ iz vnosa baze podatkov ali dokumenta, ne pa obratno. Z drugimi besedami, ne morete “povratnega inženiringa” izvirnega dokumenta iz njegovega hash ključa.