Vad är Hashes?
Hashar är matematiska formler som tar en sträng data med variabel längd, vanligtvis i form av text, och omvandlar dem till kortare numeriska värden med fast längd. Hashar 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. Hashes går också under namnet på hashfunktioner och kan också betraktas som algoritmer.
Hashes spelar en stor roll för att underlätta databasö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 till dem i varje databaspost. Varje tecken i namnet skulle ha 26 olika möjligheter - bokstäverna i det engelska alfabetet - medan den variabla längden på uppgifterna också skulle sakta ner sökningen.
Däremot skulle användningen av en hashfunktion göra datorns liv mycket lättare. Att omvandla varje textsträng till en serie med nummer 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 jobba mer effektivt.
I en databas med en hashfunktion tillämpad 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 hashfunktionen på den ingång du har skrivit, till exempel "John Doe." Detta resulterar i ett numeriskt värde, till exempel "456789." Datorn kan sedan snabbt matcha detta resultat till hash-tangenten som motsvarar rätt post.
Hashes fungerar också som digitala signaturer. Till exempel vill en avsändare, Robert, skicka ett dokument till någon och mottagaren, Mary, vill se till att dokumentet inte har manipulerats under resan. Avsändaren Robert måste 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 artiklarna 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 hashfunktion på sin dator. Slutligen jämför hon båda nycklarna. Om de är desamma, ändrades inte dokumentet på väg 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 all kollision, som uppstår när två databasposter har samma hash-nyckel. Hashfunktioner måste också vara enkelriktade. Det betyder att du kan producera en nyckel från en databaspost eller ett dokument, men inte tvärtom. Med andra ord kan du inte "omvända" originaldokumentet från hash-nyckeln.