Introduktion till kryptografi: Vad är hashing?

Av Natalia Moskaleva den 21 januari 2026

5 min lästid

Dator med kod

Hashing spelar en avgörande roll när det gäller att hantera och skydda digital information. Men vad är det egentligen och hur fungerar det?

I det här blogginlägget går vi igenom principerna för och de praktiska tillämpningarna av hashing.

Vad är hashing?

Hashing är processen att konvertera data - text, siffror, filer och praktiskt taget allt annat - till ett fast antal byte (representerat av en sträng av till synes slumpmässiga bokstäver och siffror). Detta görs med hjälp av en specialiserad matematisk algoritm som kallas hashfunktion.

Den viktigaste egenskapen hos en hashfunktion är dess enkelriktade natur. När data har hashats blir det beräkningsmässigt omöjligt* att vända processen och avkoda det ursprungliga meddelandet. Hashning ändrar data på ett irreversibelt sätt för att säkerställa dess integritet.

Hashning hindrar också obehöriga aktörer från att utnyttja känslig information. Även om en illvillig part får tillgång till informationen kommer den att förbli oläslig i hashad form.

* Även om det kan vara beräkningsmässigt omöjligt att vända hashoperationen, kan angripare utnyttja förberäknade tabeller för att gissa den ursprungliga inmatningen. Denna sårbarhet utnyttjas ofta för att knäcka lösenordshashar. Därför är det absolut nödvändigt att använda hashfunktioner som anses säkra och uppdaterade (mer om detta nedan).

En kort historik över hashing: en algoritm och en datastruktur

Vi kan spåra uppfinningen av de första hashfunktionerna tillbaka till 1958, då Hans Peter Luhn introducerade KWIC-algoritmen (Key Word in Context).

Effekten av KWIC var inget mindre än revolutionerande: Den förändrade indexeringen av textinformation och gjorde det möjligt att automatiskt skapa index från omfattande textkällor. KWIC var i princip den tidens motsvarighet till en sökmotor, som hjälpte användarna att snabbt få tillgång till den information de behövde.

Med tiden utvecklades hashingen och fick många andra tillämpningar.

Även om hashing fortfarande är relevant för effektiv dataindexering (se datastrukturen hashtabell) används det idag främst för att förbättra säkerheten.

Principen är alltid densamma: att omvandla data till en teckensträng av fast storlek. Implementeringarna skiljer sig dock åt.

I den här artikeln fokuserar vi främst på "kryptografisk hashning", som avser hashfunktioner som är utformade för att stärka säkerhetsåtgärderna.

Exempel på kryptografisk hashfunktion

För att få en bättre förståelse för hur hashing fungerar, låt oss tänka på ett scenario där vi behöver hasha två olika textsträngar:

Textsträng 1: "Den snabba bruna räven hoppar över den lata hunden."

MD5: 9e107d9d372bb6826bd81d3542a419d6
SHA-256: e4d909c290d0fb1ca068ffaddf22cbd0d0be6a8a3e8365e361d13ec37dd6b674
SHA3-256: a80f839cd4f83f6c3dafc87feae470045e4eb0d366397d5c6ce34ba1739f734d

Textsträng 2: "Den lata hunden blir översprungen av en snabb brun räv."

MD5: 3278a6f1b9bdc8a0ff58f8bfc1158fb1
SHA-256: 5da0032e38cb7b00c9ff1c1b82b5167aee0cf3e031c16f1b65d61b189b1d4cb7
SHA3-256: 46fe653b6903bfa3397c4f095c034738673c45acfad1c782fc4b72e32da13304

Lägg märke till hur de resulterande hasharna är oläsliga, vilket gör det omöjligt att baklängeskonstruera det ursprungliga meddelandet.

Dessutom genererar funktionerna konsekvent hashar med fasta längder, även om originalmeningarna har olika längd. Även om vi hashade innehållet i en hel bok skulle längden på hashen förbli densamma.

Hur är detta möjligt? Hemligheten är att dela in data i lika stora block .

Låt oss se exakt hur hashfunktionen fungerar.

Hur fungerar en hash-algoritm?

På en hög nivå följer hashningsalgoritmer dessa steg:

  • Inmatning av meddelande: Användaren väljer data som ska hashas.
  • Val av algoritm: Hashalgoritmen väljs utifrån det specifika användningsfallet och säkerhetskraven. Vanliga val är SHA-256 och SHA3-256.
  • Tillämpning av hashfunktion: Data bearbetas genom den valda hashfunktionen, som tar indata och omvandlar dem till ett hashvärde med fast storlek.

    SHA-256 fungerar t.ex. med blockstorlekar på 512 bitar, vilket ungefär motsvarar 32 Unicode-tecken (eller 64 ASCII-tecken). Vid hashning av ett kort meddelande bearbetar algoritmen det en gång för att generera det slutliga hashvärdet. Om meddelandet är kortare än ett helt block fylls det på så att det passar blockstorleken. För större indata (över 512 bitar) delar algoritmen upp data i 512-bitars bitar och bearbetar dem sekventiellt. Algoritmen kombinerar sedan hashvärdena för dessa bitar för att skapa det slutliga hashvärdet. För mycket stora datamängder eller filer upprepas processen flera gånger.
  • Lagring eller delning: Det resulterande hashvärdet, som ofta kallas "message digest", skickas till mottagaren eller lagras för att verifiera dataintegriteten.

Det är en mycket snabb process: Hashvärdet beräknas normalt på några mikrosekunder. SHA3-256 kan t.ex. bearbeta cirka 100 megabit per sekund.

Du kan hitta många onlineverktyg som är utformade för hashning av data.

Om du är utvecklare har du troligen redan införlivat kryptografisk hashing i dina applikationer. Detta kan innebära kryptografiska bibliotek som hashlib eller bcrypt, inbyggd Node-kryptomodul för hashgenerering eller JWT-bibliotek som jsonwebtoken som använder hashing för att signera och verifiera JWT-tokens.

Egenskaper hos en kryptografisk hashfunktion

Kryptografiska hashfunktioner har flera viktiga egenskaper som gör dem lämpliga för säkerhetsrelaterade applikationer. En robust kryptografisk hashfunktion är:

  • Deterministisk
    En kryptografisk hashfunktion är deterministisk, vilket innebär att den konsekvent producerar samma utdata för en given indata. Minsta förändring i indata resulterar i en helt annan hash, som vi har illustrerat ovan.

  • Irreversibel (preimage resistance)
    Det är beräkningsmässigt omöjligt att vända en hash och hitta dess ursprungliga indata. Denna egenskap, känd som preimage-resistens, skyddar hashade data.

  • Kollisionsresistent
    Kryptografiska hashfunktioner är utformade för att motstå kollisionsattacker. En kollision inträffar när två olika indata ger samma hashvärde. Kollisioner är problematiska eftersom de kan utnyttjas av angripare. En bra kryptografisk hashfunktion gör det oerhört svårt att hitta kollisioner.

Sammantaget gör ovanstående egenskaper kryptografiska hashfunktioner särskilt väl lämpade för säkerhetsapplikationer, där dataintegritet och konfidentialitet är avgörande.

Icke-kryptografiska hashfunktioner har däremot andra krav. De tenderar att prioritera effektivitet och snabbhet, med mindre vikt på kollisionsmotstånd. Dessa funktioner behöver inte de komplexa säkerhetsfunktioner som kryptografiska hashfunktioner har.

Vilka hashalgoritmer används?

Message Digest 5 (MD5)

MD5 var en av de första standarderna för hash-algoritmer. Den användes ofta för verifiering av filintegritet (kontrollsummor) och för att lagra hashade lösenord i databaser.

Det är en enkel algoritm som ger en fast 128-bitarssträng för varje inmatning och använder en grundläggande envägsoperation över flera omgångar för att beräkna utmatningen. Dess enkelhet och korta utmatningslängd gör dock MD5 mycket mottaglig för exploatering. Numera anses MD5 vara osäkert och bör inte längre användas.

Säker hashalgoritm (SHA)

SHA är en familj av hashalgoritmer.

SHA1 utvecklades av amerikanska National Security Agency (NSA) och liknar MD5. Den genererar 160-bitars hashvärden, som representeras av 40-siffriga hexadecimala strängar. SHA1 anses också vara föråldrad och opålitlig för säkerhetsändamål. Istället rekommenderas att man använder SHA2 eller SHA3.

SHA2-familjen, som också har utvecklats av NSA, består av sex olika hashfunktioner som producerar hashvärden av varierande längd: 224, 256, 384 eller 512 bitar. SHA2 är den nuvarande säkra standarden för hashning av känsliga data.

SHA3 introducerades 2006 som en del av ett bredare system av hash-algoritmer som kallas KECCAK (uttalas "ketch-ak"). Den utgör ett alternativ till SHA2 och kan användas för säker hashning.

Andra hashingalgoritmer

Det finns många andra hash-algoritmer där ute, inklusive BLAKE (som används i Ethereum), Bcrypt, Argon2 och mer.

Här är en omfattande jämförelse av hashfunktioner.

Med tiden har hashalgoritmerna blivit mer avancerade och säkra. Detta har gjort det allt svårare för illasinnade aktörer att baklängeskonstruera hashade värden. Även om hashfunktioner fortfarande kan brytas, gör de komplexa matematiska operationerna bakom dem att det är en mycket skrämmande uppgift utan betydande beräkningskraft.

Vad används hashing till?

SHA-256-kontrollsummor: Används för att verifiera integriteten hos filer och nedladdningar för att säkerställa att de inte har manipulerats.

Hashning av lösenord: Används för säker lagring och verifiering av lösenord. Hashing kombineras ofta med saltning för att göra lösenorden mer komplexa och unika utan att ställa ytterligare krav på användarna. I enkla termer: Om ett slumpmässigt saltvärde läggs till två identiska lösenord kommer de resulterande hasharna att vara olika. Detta skyddar mot regnbågstabellsattacker och rekommenderas starkt eftersom människor är exceptionellt dåliga på att själva komma på säkra lösenord.

SSL/TLS-certifikat: Används för att autentisera en webbplats identitet, etablera förtroende och säkra anslutningar för online-transaktioner.

Digitala signaturer: Används för att validera äktheten hos digitala meddelanden eller dokument.

Pålitlig tidsstämpling: Används för att fastställa tidpunkten då digitala data skapades eller ändrades via en betrodd tidsstämpel, vilket är viktigt för juridiska och regleringsmässiga ändamål.

Signerade JSON-webbtokens (JWT): Används för identitetshantering och för att på ett säkert sätt överföra information mellan parter som litar på varandra.

Alla dessa användningsfall är beroende av kärnfunktionen i kryptografisk hashning: att garantera dataintegritet och förhindra störningar eller manipulering av information.

Hashing vs. kryptering

Termerna "hashing" och "kryptering" används ibland synonymt, men de tjänar olika syften.

Hashning är till sin natur irreversibel: Det gör det omöjligt att avkoda hashade värden. Däremot tillhandahåller kryptering alltid en dekrypteringsnyckel för att tolka data.

Därför är hashning avsedd för integritetsvalidering, medan kryptering säkerställer datakonfidentialitet.