Digestrader använder formen “ALGORITM hash” så att de kan kopieras in i versionsanteckningar eller nedladdningsmanifest.
Hash-generator — varje algoritm förklarad från grunden
På en mening: en kryptografisk hashfunktion är en envägsmixer — den tar valfritt antal byte och pressar ihop dem till ett fingeravtryck med fast längd, så att samma indata alltid ger samma fingeravtryck, men fingeravtrycket säger ingenting om hur indata kan återskapas. Den här sidan kör elva av dem helt i webbläsarfliken.
Varje algoritm nedan förklaras på samma fyra steg: vad den är i enkla ord, intuitionen om hur den fungerar utan några formler, om den fortfarande bör användas idag, och de misstag man oftast gör med den.
MD5
Vad den är. MD5 (1992) komprimerar valfri indata till ett 128-bitars fingeravtryck (32 hex-tecken). Den konstruerades för att vara snabb på 1990-talets datorer, och det är den — precis därför finns den fortfarande överallt: nedladdningssidor för programvara, deduplicerade filcacheminnen, äldre databasnycklar.
Hur det fungerar, intuitivt. Indata delas i block om 64 byte. Varje block blandas fyra gånger in i ett rullande 128-bitars tillstånd (fyra något olika blandningsomgångar), och efter sista blocket skrivs tillståndet ut som digest. Blandningen byggs av additioner, rotationer och tabelluppslag — billigt då, billigt nu.
Bör man använda den? För kontrollsummor där ingen försöker lura en — att upptäcka en skadad nedladdning, hitta dubblettfiler — ja, den rapporterar korruption utmärkt. För allt som angrips, nej: sedan 2004 kan forskare konstruera två olika filer med samma MD5 på några sekunder, och riktiga certifikatförfalskningar med MD5-kollisioner förekom 2008. Behandla den som ett serienummer, inte ett lås.
Vanliga misstag. Att använda MD5 för lösenord (alldeles för snabb — se Lösenordshashgeneratorn för vad som hör hemma där i stället); att lita på en fil för att “MD5 stämmer” när angriparen också publicerat MD5-värdet; och att klistra in hela raden MD5 (fil) = hash i stället för bara hashen — verifieringsrutan ovan godtar båda.
SHA-1
Vad den är. SHA-1 (1995, NSA) ger en 160-bitars (40 hex-tecken) digest. I tjugo år var den standardhashen för integritet i Git, TLS-certifikat och PGP-signaturer.
Hur det fungerar, intuitivt. Samma familjerecept som MD5 men med ett 160-bitars tillstånd, 80 blandningsomgångar per 64-bytesblock och en bredare uppsättning operationer. De extra omgångarna var tänkta att göra mixern svårare att reverse-engineera.
Bör man använda den? Nej, för allt som angrips. Det teoretiska knäckandet blev praktiskt 2017 när Google tog fram två olika PDF-filer med identiska SHA-1-värden (SHAttered-attacken, på omkring 6 500 CPU-år). Git lagrar fortfarande objekt under SHA-1 men behandlar det bara som identifierare och har sedan dess lagt till kollisionsdetektering. För nytt arbete används SHA-256 eller SHA-3.
Vanliga misstag. Att tro att 160 bitar “fortfarande är tillräckligt långt” — knäckandet gäller den interna strukturen, inte brute force; och att blanda ihop RIPEMD-160 med SHA-1 eftersom båda har 40 hex-tecken (identifieringsrutan ovan skiljer dem åt).
SHA-2: SHA-256, SHA-384 och SHA-512
Vad den är. SHA-2-familjen (2001, NSA) är arbetshästen för modern integritetskontroll. SHA-256 ger 256 bitar (64 hex-tecken), SHA-512 ger 512 bitar, och SHA-384 är SHA-512 med resultatet kapat till 384 bitar — användbart när ett protokoll kräver en kortare tagg.
Hur det fungerar, intuitivt. Block om 64 byte (eller 128 byte för 512-bitarsvarianterna) viks in i ett tillstånd om 8 ord genom 64 (eller 80) omgångar av add-rotera-blanda-steg. Till skillnad från MD5 sträcker schemat först varje block till en utökad buffert, och det var det som slog ut den typ av attack som bröt MD5 och SHA-1. En kuriositet värd att veta: på 64-bitars processorer är SHA-512 snabbare än SHA-256, eftersom den bearbetar dubbelt så mycket data per omgång med 64-bitars aritmetik.
Bör man använda den? Ja — SHA-256 är standardsvaret för filkontrollsummor, kodsignering och certifikatfingeravtryck idag, utan känt praktiskt brott efter två decennier av analys. Använd SHA-384/512 när mer marginal önskas eller när plattformen kör dem snabbare.
Vanliga misstag. Att använda enbart SHA-256 för lösenord — den är en snabb hash, och hastighet är fienden där (använd bcrypt/scrypt/Argon2id); och att förväxla digestens längd med styrka för kollisionsresistens i angripna sammanhang — längden sätter bara taket.
SHA-3 (SHA3-256 / SHA3-512) och Keccak-256
Vad den är. SHA-3 (2015, standardiserad från Keccak-inlämningen av Bertoni, Daemen, Peeters och Van Assche) är NIST:s tredje hashstandard. Den delar ingenting med SHA-2:s interna delar — den valdes just för att vara en oberoende reserv om SHA-2 någon gång skulle falla.
Hur det fungerar, intuitivt. I stället för att röra igenom block genom ett litet tillstånd, Keccak “suger upp och pressar ut” upprepade gånger: indata absorberas bit för bit i en 5×5×64-bitars svamp, hela svampen blandas av en fast permutation (24 omgångar av bitvisa operationer över hela tillståndet), och digestbitarna pressas sedan ut. Svampbilden är hela idén: kapacitetsbitar matas aldrig ut, och det är de som gör funktionen envägs.
Keccak-256 mot SHA3-256. De skiljer sig i exakt en utfyllnadsbyte. Keccak-teamets ursprungliga inlämning fyllde ut det sista blocket med 0x01; NIST ändrade standardutfyllnaden till 0x06 (domänseparation som SHA-2-eran Keccak använder). Ethereum antog den ursprungliga utfyllnaden, så dess “keccak256” skiljer sig från standard-SHA3-256 för varje indata. Den här sidan erbjuder båda, markerade var för sig.
Bör man använda den? Ja — antingen som primärt val när policyn vill ha en icke-SHA-2-algoritm, eller där ekosystemet redan talar den. Vanliga misstag: att anta att SHA3-256 och Keccak-256 är utbytbara (de är det inte — jämför de två raderna som sidan producerar för samma indata); och att anta att “SHA-3” ersätter SHA-2 — båda är säkra, men SHA-2 är fortfarande den mest använda.
RIPEMD-160
Vad den är. RIPEMD-160 (1996, RIPE-konsortiet av europeiska akademiker, förstärkt av Dobbertin, Bosselaers och Preneel) ger 160 bitar. Den är en helt europeisk konstruktion, medvetet oberoende av SHA-familjen som konstruerats av NSA.
Hur det fungerar, intuitivt. Varje 64-bytesblock behandlas av två parallella linjer med 80 omgångar med olika konstanter och rotationsmängder; till sist kombineras de två linjerna och det gamla tillståndet. Tvåspårsstrukturen var konstruktörernas sätt att motstå de differentialattacker som bröt andra hashar från 1990-talet.
Bör man använda den? I praktiken lever den främst kvar inne i andra system: Bitcoin-adresser hashar sina publika nycklar med RIPEMD-160(SHA-256(pk)), äldre OpenPGP-nycklar erbjuder den som hashalternativ, och den är den traditionella hashen för BitTorrent v1-delar tillsammans med SHA-1. Det finns ingen praktisk kollisionsattack, men 160-bitarsstorleken ger den minsta säkerhetsmarginalen på den här sidan. För nya fristående användningar bör SHA-256 eller SHA-3 föredras.
Vanliga misstag. Att tro att de två parallella linjerna gör den “dubbelt så stark” — det är utdatastorleken som begränsar kollisionsresistensen; och att förväxla den med SHA-1 (samma längd på 40 hex-tecken; identifieringsrutan ovan listar båda möjligheterna sida vid sida).
BLAKE2b-512 och BLAKE2s-256
Vad den är. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn och Winnerlein) är en hash konstruerad för programvarans hastighet: BLAKE2b riktar sig mot 64-bitarsplattformar med upp till 512 bitars utdata, BLAKE2s mot 32-bitarsplattformar med upp till 256 bitars utdata.
Hur det fungerar, intuitivt. Det härstammar från SHA-3-finalisten BLAKE, vars kärna är en nyckelad permutation lånad från strömchiffret ChaCha: en 4×4-matris av ord blandas genom att växla mellan kolumn- och diagonalsteg — likt att blanda ett rutnät först uppifrån och ned, sedan längs diagonalerna — i 12 (BLAKE2b) eller 10 (BLAKE2s) omgångar per block. Eftersom stegen låter sig avbildas väl på processorinstruktioner är BLAKE2 ofta snabbare än MD5 samtidigt som säkerheten är jämförbar med SHA-3.
Bör man använda den? Ja — det är en helt modern, obruten konstruktion, populär i prestandakänslig programvara (paketintegritet i vissa ekosystem, innehållsadresserad lagring, deduplicering av säkerhetskopior) och som snabb MAC. På den här sidan ger BLAKE2b-512 de längsta digesterna och BLAKE2s-256 det kompakta moderna alternativet.
Vanliga misstag. Att tro att “snabbare måste betyda svagare” — BLAKE2 är snabbare genom konstruktion, inte genom hörnskärning; och att inte inse att BLAKE2 också tar emot en nyckel (vilket gör den till en MAC) eller en personaliseringssträng — den här sidan använder den alltid i enkelt, onyckelat läge.
Så läser man verifierings- och identifieringsrutorna
Verifiera. Verifieringsrutan normaliserar det som klistras in — versaler eller gemener, kolon var annan siffra, ett prefix sha256=, BSD-omslaget SHA256 (fil) = hash, en GNU md5sum-rad med filnamnet efter hashen, stray \r\n — räknar sedan om varje markerad algoritm över de nuvarande indata (text eller vald fil) och rapporterar varje algoritm som matchar. En grön matchning betyder “dessa byte är exakt det utgivaren hashade”; rött betyder att ingen av de markerade algoritmerna gav det — markera fler algoritmer eller kontrollera om klistringen blev avklippt.
Identifiera. Identifieringsrutan hashar inget; den läser strängens form. Längden begränsar kandidaterna: 32 hex-tecken kan vara MD5, 40 kan vara SHA-1 eller RIPEMD-160, 64 kan vara SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Prefix avslöjar lösenordshashar ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — det är en annan art (se Lösenordshashgeneratorn) och beräknas medvetet inte av den här sidan. En sträng med +, / och = vars längd är delbar med 4 är mer sannolikt Base64-kodad data än en hex-digest; verktyget avkodar den och anger motsvarande antal byte.
Vad identifiering kan och inte kan berätta. Längd och teckenuppsättning är fingeravtryck av formatet, inte bevis för algoritmen: två 64-hex-strängar kan komma från SHA-256 eller från en förkortad SHA-512. Identifieraren rangordnar möjligheter; verifieringsrutan är den som visar vilken algoritm byten faktiskt matchar.
Alla elva i korthet
| Algoritm |
Digestion |
Påhittad |
Digest av “The quick brown fox jumps over the lazy dog” |
| MD5 | 128 bitar | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bitar | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bitar | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bitar | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bitar | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bitar | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bitar | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bitar | före 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bitar | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bitar | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bitar | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Varje digest i tabellen ovan produceras av motorerna på just den här sidan — markera alla algoritmer, klicka på Exempel och jämför. SHA-3-, Keccak-, RIPEMD-160- och BLAKE2-raderna kommer från den självhostade kärnan crypto-shared.js som används av webbplatsens kryptoverktyg.
Vanliga frågor
Vilken ruta ska man lita på för en nedladdning? Verifieringsrutan, med SHA-256 ikryssad — de flesta utgivare signerar idag SHA-256 eller SHA-512. Identifieringsrutan anger bara kandidater; den bevisar aldrig något om filen.
Varför finns Keccak-256 över huvud taget i listan? För att Ethereum, Swarm och några liknande bokföringssystem standardiserade sig på den förstandardiserade utfyllnaden. Verifierar man en Ethereum-keccak256 måste man använda den raden, inte SHA3-256.
Kan två olika indata dela en digest? I teorin ja — oändligt många indata avbildas på en ändlig mängd digester (duvslagsprincipen). I praktiken handlar “kollisionsresistens” om att hitta ett sådant par innan universum når värmedöden, och alla algoritmer ovan utom MD5 och SHA-1 står fortfarande.
Är hashar kryptering? Nej. Kryptering går att vända med en nyckel; en hash är en envägsmixer. Inget på den här sidan kan “dekrypteras” tillbaka till texten — och det är en egenskap, inte en begränsning.