Haševi su matematičke formule koje uzimaju niz podataka promjenjive duljine, obično u obliku teksta, i pretvaraju ga u kraće numeričke vrijednosti fiksne duljine. Hashevi se često koriste u računalnim bazama podataka kako bi pretraga bila brža i učinkovitija. Također se koriste u enkripciji kako bi se osiguralo da lozinke nisu ugrožene i za provjeru autentičnosti digitalnih potpisa, između ostalog. Hashevi se također nazivaju hash funkcijama, a mogu se smatrati i algoritmima.
Haševi imaju veliku ulogu u olakšavanju pretraživanja baze podataka. U bazi podataka koja se sastoji od imena, na primjer, ako korisnik traži “John Doe”, računalo bi moralo uskladiti sve znakove u pretraživanju s onima u svakom unosu baze podataka. Svaki znak u imenu imao bi 26 različitih mogućnosti – slova engleske abecede – dok bi promjenjiva duljina unosa također usporila pretragu.
Nasuprot tome, primjena hash funkcije znatno bi olakšala život računala. Pretvaranje svakog tekstualnog niza u niz brojeva pojednostavilo bi pretragu, jer bi računalo imalo samo deset mogućnosti za provjeru za svaki znak: znamenke od “0” do “9”. Fiksna duljina niza brojeva također pomaže računalu da učinkovitije obavlja svoj posao.
U bazi podataka s primijenjenom hash funkcijom, svi unosi imaju odgovarajući, jedinstveni broj. To se zove hash ključ. U ovom slučaju, kada izvršite pretragu, računalo prvo primjenjuje hash funkciju na unos koji ste napisali, kao što je “John Doe”. To rezultira brojčanom vrijednošću, na primjer “456789”. Računalo tada može brzo uskladiti ovaj rezultat s hash ključem koji odgovara ispravnom unosu.
Hashevi također funkcioniraju kao digitalni potpisi. Na primjer, pošiljatelj, Robert, želi poslati dokument nekome, a primatelj, Mary, želi se uvjeriti da dokument nije neovlašten dok je na putu. Pošiljatelj, Robert, mora samo pokrenuti dokument kroz hash funkciju, što rezultira brojčanom vrijednošću. Robert zatim šifrira hash ključ i šalje dokument zajedno s šifriranim ključem.
Mary prima obje stavke i dešifrira hash ključ. Sada može vidjeti brojčanu vrijednost koja je rezultat dokumenta prije nego što je poslan. Kako bi provjerila je li dokument u njezinim rukama potpuno isti, ona pokreće dokument kroz hash funkciju na svom računalu. Na kraju, ona uspoređuje oba ključa. Ako su isti, onda dokument nije izmijenjen na putu do primatelja.
Postoji mnogo različitih hash funkcija, svaka sa svojim vlastitim matematičkim formulama. Da bi hash funkcija radila, ona mora minimizirati bilo kakvu koliziju, koja se događa kada dva unosa baze podataka imaju isti hash ključ. Hash funkcije također moraju biti jednosmjerne. To znači da možete proizvesti ključ iz unosa baze podataka ili dokumenta, ali ne i obrnuto. Drugim riječima, ne možete “obrnuti inženjering” izvornog dokumenta iz njegovog hash ključa.