Hashfunktion

Från Wikipedia
Hoppa till: navigering, sök
En typisk hashfunktion i arbete.
Varje värde förvandlas till ett mindre heltal, som kan användas som index i en tabell. Denna bild visar de stora skillnaderna i slutvärde, även när ingångsvärdena är nära lika (i det här fallet är det ett enda ord i en längre mening som byts ut).

En hashfunktion a) är en algoritm eller matematisk funktion som gör om någon sorts data till ett relativt litet heltal som kan fungera som index till en array. De värden som funktionen ger upphov till kan kallas hashsumma, hashvärde och kondensat.[1]

Hashfunktioner används oftast för att öka hastigheten för uppslagning av värden i tabeller eller för att jämföra dataobjekt. Exempel på detta är att hitta värden i en databas, att hitta dubbletter eller nära lika objekt i en datafil, att hitta DNA-sekvenser som liknar varandra o.s.v..

Hashfunktioner är nära besläktade med kontrollsummor, fingeravtryck för data, pseudoslumptalsgeneratorer och kryptografiska hashfunktioner. Dessa områden överlappar varandra delvis, men alla har sina egna användningsområden och krav.
–––––––––––––––
a) Engelska ordet hash betyder hacka sönder, ställa till oreda.

Kryptografiska hash-funktioner[redigera | redigera wikitext]

Kryptografiska hash-funktioner är hash-funktioner gjorts på ett sådant vis att det ska vara mycket svårt att finna vilket ingångs-värde (visaren) som gett upphov till en viss hash. Hashen måste vara lång för att hindra Brute force-attacker, så vanligtvis används 128 bitar eller mer. Kryptografiska hash-funktioner optimeras också för att vara snabba. Ett användningsområde är att säkerställa att en fil eller ett meddelande inte ändrats av en illvillig tredje part vid överföringen. Exempel på kryptografiska hash-funktioner som år 2017 anses som relativt säkra är SHA-2, SHA-3 och BLAKE2.

MD5 och SHA-1 ansågs tidigare vara säkra men har visat sig ha dålig kollisionsresistans.

Lösenordsverifiering[redigera | redigera wikitext]

Hashfunktioner kommer väl till pass i exempelvis lösenordsdatabaser, då man önskar att användarnas lösenord inte syns i klartext, om databasen skulle bli stulen. Dock måste algoritm väljas annorlunda jämfört med kryptografiska hash-funktioner, då det inte ska gå att göra många lösenordsgissningar snabbt. Exempel på funktioner som år 2017 anses som relativt säkra är PBKDF2, Bcrypt, Scrypt och argon2.

Se även[redigera | redigera wikitext]

Referenser[redigera | redigera wikitext]

  1. ^ ”Svenska datatermgruppen, frågor och svar, lista, version 27. Fråga 168”. Arkiverad från originalet den 2 mars 2010. https://web.archive.org/web/20100302074904/http://www.nada.kth.se/dataterm/fos-lista.html.