Hvad er Hashes?
Hashes er matematiske formler, der tager en streng data med variabel længde, normalt i form af tekst, og konverterer dem til kortere numeriske værdier med fast længde. Hashes bruges ofte i computerdatabaser for at gøre søgninger hurtigere og mere effektive. De bruges også i kryptering for at sikre, at adgangskoder ikke kompromitteres og til autentificering af digitale underskrifter, blandt andre anvendelser. Hashes går også under navnet på hashfunktioner og kan også betragtes som algoritmer.
Hashes spiller en stor rolle i at lette databasesøgninger. I en database, der består af navne, for eksempel hvis en bruger søger efter "John Doe", skal computeren matche alle tegnene i søgningen til dem i hver databaseindgang. Hvert tegn i navnet ville have 26 forskellige muligheder - bogstaverne i det engelske alfabet - mens den variable længde af indgange også vil bremse søgningen.
I modsætning hertil ville anvendelse af en hash-funktion gøre computerens liv meget lettere. At omdanne hver tekststreng til en række numre ville forenkle søgningen, fordi computeren kun har ti muligheder for at kontrollere for hvert tegn: cifre “0” til “9.” Numberseriens faste længde hjælper også computeren med at gøre sit arbejde mere effektivt.
I en database med en hash-funktion anvendt har alle poster et tilsvarende unikt nummer. Dette kaldes en hash-nøgle. I dette tilfælde, når du foretager en søgning, anvender computeren først hash-funktionen på det input, du har skrevet, såsom "John Doe." Dette resulterer i en numerisk værdi, f.eks. "456789." Computeren kan derefter hurtigt match dette resultat til hash-tasten, der svarer til den korrekte post.
Hashes fungerer også som digitale signaturer. F.eks. Ønsker en afsender, Robert, at sende et dokument til nogen, og modtageren, Mary, ønsker at sikre sig, at dokumentet ikke er blevet manipuleret undervejs. Afsenderen, Robert, skal kun køre dokumentet gennem en hash-funktion, hvilket resulterer i en numerisk værdi. Robert krypterer derefter hash-nøglen og sender dokumentet sammen med den krypterede nøgle.
Mary modtager begge genstande og dekrypterer hash-nøglen. Hun kan nu se den numeriske værdi, der blev resultatet af dokumentet, før det blev sendt. For at kontrollere, at dokumentet i hendes hænder er nøjagtigt det samme, kører hun dokumentet gennem en hash-funktion på sin computer. Til sidst sammenligner hun begge nøgler. Hvis de er de samme, blev dokumentet ikke ændret på vej til modtageren.
Der findes mange forskellige hashfunktioner, hver med deres egne matematiske formler. For at en hash-funktion skal fungere, skal den minimere enhver kollision, der opstår, når to databaseposter har den samme hashnøgle. Hash-funktioner skal også være envejs. Det betyder, at du kan fremstille en nøgle fra en databaseindgang eller et dokument, men ikke omvendt. Med andre ord, du kan ikke “reverse-engineer” originaldokumentet fra dets hash-nøgle.