Hashes är matematiska formler som tar en sträng av data med variabel längd, vanligtvis i form av text, och omvandlar den till kortare numeriska värden med fast längd. Hashes används ofta i datordatabaser för att göra sökningar snabbare och effektivare. De används också i kryptering för att säkerställa att lösenord inte äventyras och för att autentisera digitala signaturer, bland annat. Hashar går också under namnet hashfunktioner, och kan också betraktas som algoritmer.
Hashes spelar en stor roll för att underlätta databassökningar. I en databas som består av namn, till exempel, om en användare söker efter ”John Doe”, måste datorn matcha alla tecken i sökningen med de i varje databaspost. Varje tecken i namnet skulle ha 26 olika möjligheter – bokstäverna i det engelska alfabetet – medan den varierande längden på posterna också skulle sakta ner sökningen.
Däremot skulle en hashfunktion göra datorns liv mycket enklare. Att förvandla varje textsträng till en serie siffror skulle förenkla sökningen, eftersom datorn bara skulle ha tio möjligheter att kontrollera för varje tecken: siffrorna ”0” till ”9”. Den fasta längden på nummerserien hjälper också datorn att göra sitt jobb mer effektivt.
I en databas med applicerad hashfunktion har alla poster ett motsvarande unikt nummer. Detta kallas en hash-nyckel. I det här fallet, när du gör en sökning, tillämpar datorn först hash-funktionen på inmatningen du har skrivit, till exempel ”John Doe.” Detta resulterar i ett numeriskt värde, till exempel ”456789.” Datorn kan sedan snabbt matcha detta resultat med hash-nyckeln som motsvarar den korrekta posten.
Hashes fungerar även som digitala signaturer. Till exempel, en avsändare, Robert, vill skicka ett dokument till någon och mottagaren, Mary, vill försäkra sig om att dokumentet inte har manipulerats under vägen. Avsändaren, Robert, behöver bara köra dokumentet genom en hashfunktion, vilket resulterar i ett numeriskt värde. Robert krypterar sedan hash-nyckeln och skickar dokumentet tillsammans med den krypterade nyckeln.
Mary tar emot båda föremålen och dekrypterar hash-nyckeln. Hon kan nu se det numeriska värdet som resulterade från dokumentet innan det skickades. För att verifiera att dokumentet i hennes händer är exakt samma, kör hon dokumentet genom en hash-funktion på sin dator. Till sist jämför hon båda nycklarna. Om de är desamma ändrades inte dokumentet på vägen till mottagaren.
Det finns många olika hashfunktioner, var och en med sina egna matematiska formler. För att en hashfunktion ska fungera måste den minimera eventuella kollision, som uppstår när två databasposter har samma hashnyckel. Hash-funktioner måste också vara enkelriktade. Det betyder att du kan skapa en nyckel från en databaspost eller ett dokument, men inte tvärtom. Med andra ord kan du inte ”reverse-engineera” originaldokumentet från dess hash-nyckel.