Digestlinjer har formen “ALGORITME hash”, så de kan kopieres ind i udgivelsesnoter eller downloadmanifester.
Hash-generator — alle algoritmer forklaret fra bunden
I én sætning: en kryptografisk hashfunktion er en envejsblender — den tager et vilkårligt antal bytes og presser dem ned til et fingeraftryk med fast længde, således at det samme input altid giver det samme fingeraftryk, men fingeraftrykket fortæller intet om, hvordan input kan genskabes. Denne side kører elleve af dem helt inde i browserfanen.
Hver algoritme nedenfor forklares i de samme fire trin: hvad den er med almindelige ord, intuitionen om hvordan den virker uden formler, om den stadig bør bruges i dag, og de fejl folk oftest laver med den.
MD5
Hvad den er. MD5 (1992) komprimerer et vilkårligt input til et 128-bit (32 hex-tegn) fingeraftryk. Den blev designet til at være hurtig på 1990'ernes computere, og det er den — netop derfor findes den stadig overalt: softwaredownloadsider, cache til filduplikering, ældre databasenøgler.
Sådan virker den, intuitivt. Input skæres i 64-byte-blokke. Hver blok røres ind i en 128-bit rullende tilstand fire gange (fire lidt forskellige blandingsrunder), og efter den sidste blok udskrives tilstanden som digest. Omrøringen er bygget af additioner, rotationer og tabelopslag — billigt dengang, billigt nu.
Skal den bruges? Til checksums, hvor ingen forsøger at snyde en — opdagelse af en beskadiget download, find af dubletfiler — ja, den rapporterer stadig korruption perfekt. Til alt adversarielt nej: siden 2004 har forskere kunnet lave to forskellige filer med samme MD5 på sekunder, og rigtige certifikatforfalskninger med MD5-kollisioner skete i 2008. Behandl den som et serienummer, ikke som en lås.
Almindelige fejl. At bruge MD5 til adgangskoder (alt for hurtigt — se Adgangskode-hash-generator for, hvad der hører hjemme i stedet); at stole på en fil, fordi “MD5 passer”, når angriberen også har offentliggjort MD5'en; og at indsætte hele linjen MD5 (file) = hash i stedet for blot hashen — verificér-boksen ovenfor accepterer begge dele.
SHA-1
Hvad den er. SHA-1 (1995, NSA) giver et 160-bit digest (40 hex-tegn). I tyve år var den standardintegritetshashen for Git, TLS-certifikater og PGP-signaturer.
Sådan virker den, intuitivt. Samme familieopskrift som MD5, men med en 160-bit tilstand, 80 blandingsrunder pr. 64-byte-blok og et bredere sæt operationer. De ekstra runder skulle gøre blenderen sværere at reverse-engineere.
Skal den bruges? Nej, til alt adversarielt. Det teoretiske brud blev praktisk i 2017, da Google producerede to forskellige PDF-filer med identiske SHA-1-værdier (SHAttered-angrebet, ca. 6500 CPU-år). Git gemmer stadig objekter under SHA-1, men behandler det kun som identifikator, og har siden tilføjet kollisionsdetektion. Til nyt arbejde brug SHA-256 eller SHA-3.
Almindelige fejl. At tro, at 160 bit “stadig er lange nok” — bruddet handler om den interne struktur, ikke brute force; og at forveksle RIPEMD-160 med SHA-1, fordi begge er 40 hex-tegn lange (identifikatorboksen ovenfor skelner dem).
SHA-2: SHA-256, SHA-384 og SHA-512
Hvad den er. SHA-2-familien (2001, NSA) er arbejdshesten i moderne integritetskontrol. SHA-256 giver 256 bit (64 hex-tegn), SHA-512 giver 512 bit, og SHA-384 er SHA-512 med resultatet afkortet til 384 bit — nyttigt, når en protokol kræver et kortere mærke.
Sådan virker den, intuitivt. Blokke på 64 bytes (eller 128 bytes for 512-bit-varianterne) foldes ind i en 8-ords tilstand gennem 64 (eller 80) runder af add-rotate-mix-trin. I modsætning til MD5 udvider skemaet først hver blok til en udvidet buffer, og det var det, der slog den type angreb, der knækkede MD5 og SHA-1. En detalje, det er værd at vide: på 64-bit-CPU'er er SHA-512 hurtigere end SHA-256, fordi det behandler dobbelt så mange data pr. runde med 64-bit-aritmetik.
Skal den bruges? Ja — SHA-256 er standardsvaret for filchecksums, kodesignering og certifikatfingeraftryk i dag, uden kendt praktisk brud efter to årtiers analyse. Brug SHA-384/512, når der ønskes mere margin, eller når platformen kører dem hurtigere.
Almindelige fejl. At bruge SHA-256 alene til adgangskoder — det er en hurtig hash, og hastighed er fjenden der (brug bcrypt/scrypt/Argon2id); og at forveksle digestlængden med styrke, når det gælder kollisionsmodstand i adversarielle sammenhænge — længden sætter kun loftet.
SHA-3 (SHA3-256 / SHA3-512) og Keccak-256
Hvad den er. SHA-3 (2015, standardiseret ud fra Keccak-indsendelsen af Bertoni, Daemen, Peeters og Van Assche) er NIST's tredje hash-standard. Den deler intet med SHA-2's interne opbygning — den blev netop valgt for at være en uafhængig reserve, hvis SHA-2 nogensinde falder.
Sådan virker den, intuitivt. I stedet for at røre blokke gennem en lille tilstand, “suger og presser” Keccak gentagne gange: input optages bit for bit i en 5×5×64-bit-svamp, hele svampen blandes af en fast permutation (24 runder af bitvise operationer over hele tilstanden), og digestbits presses derefter ud. Svampebilledet er hele ideen: kapacitetsbits udsendes aldrig, og det er dem, der gør funktionen envejs.
Keccak-256 vs. SHA3-256. De adskiller sig præcis ved én padding-byte. Keccak-teamets oprindelige indsendelse paddede den sidste blok med 0x01; NIST ændrede standardpaddingen til 0x06 (domæneseparation, som SHA-2-tidens Keccak bruger). Ethereum adopterede den oprindelige padding, så dets “keccak256” adskiller sig fra standard SHA3-256 for hvert input. Denne side tilbyder begge, afkrydset hver for sig.
Skal den bruges? Ja — enten som primært valg, når politikken ønsker en ikke-SHA-2-algoritme, eller hvor økosystemet allerede taler den. Almindelige fejl: at antage, at SHA3-256 og Keccak-256 er udskiftelige (det er de ikke — sammenlign de to rækker, som denne side producerer for samme input); og at antage, at “SHA-3” afløser SHA-2 — begge er sikre, og SHA-2 er stadig den mest udbredte.
RIPEMD-160
Hvad den er. RIPEMD-160 (1996, RIPE-konsortiet af europæiske akademikere, styrket af Dobbertin, Bosselaers og Preneel) giver 160 bit. Det er et helt europæisk design, bevidst uafhængigt af den NSA-designede SHA-familie.
Sådan virker den, intuitivt. Hver 64-byte-blok behandles af to parallelle linjer på 80 runder med forskellige konstanter og rotationsmængder; til sidst kombineres de to linjer og den gamle tilstand. Den todelte struktur var designernes måde at modstå de differentielle angreb, der knækkede andre hashes fra 1990'erne.
Skal den bruges? I praksis overlever den primært inde i andre systemer: Bitcoin-adresser hasher deres offentlige nøgler med RIPEMD-160(SHA-256(pk)), ældre OpenPGP-nøgler tilbyder den som hashvalg, og den er den traditionelle hash til BitTorrent v1-stykker sammen med SHA-1. Der findes intet praktisk kollisionsangreb, men 160-bit-størrelsen giver den den mindste sikkerhedsmargen på denne side. Til ny selvstændig brug foretrækkes SHA-256 eller SHA-3.
Almindelige fejl. At tro, at de to parallelle linjer gør den “dobbelt så stærk” — outputstørrelsen er det, der begrænser kollisionsmodstanden; og at forveksle den med SHA-1 (samme længde på 40 hex-tegn; identifikatorboksen ovenfor lister begge muligheder side om side).
BLAKE2b-512 og BLAKE2s-256
Hvad den er. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn og Winnerlein) er en hash designet til softwarehastighed: BLAKE2b sigter mod 64-bit-platforme med op til 512-bit output, og BLAKE2s sigter mod 32-bit-platforme med op til 256-bit output.
Sådan virker den, intuitivt. Den nedstammer fra SHA-3-finalisten BLAKE, hvis kerne er en nøglet permutation lånt fra strømkrypteringen ChaCha: en 4×4-matrix af ord blandes ved skiftevis at blande kolonner og diagonaler — som at stokke et gitter først top-til-bund og derefter langs diagonalerne — med 12 (BLAKE2b) eller 10 (BLAKE2s) runder pr. blok. Fordi disse trin passer fint til CPU-instruktioner, er BLAKE2 ofte hurtigere end MD5, samtidig med at sikkerheden kan sammenlignes med SHA-3.
Skal den bruges? Ja — den er et helt moderne, ubrudt design, populær i ydeevnefølsom software (pakkeintegritet i nogle økosystemer, indholdsadresseret lagring, backup-deduplikering) og som hurtig MAC. På denne side giver BLAKE2b-512 de længste digests, og BLAKE2s-256 er det kompakte moderne valg.
Almindelige fejl. At tro, at “hurtigere må betyde svagere” — BLAKE2 er hurtigere af design, ikke fordi der skæres hjørner; og ikke at vide, at BLAKE2 også accepterer en nøgle (så det bliver en MAC) eller en personaliseringsstreng — denne side bruger altid den i almindelig, ikke-nøglet tilstand.
Sådan læses Verificér- og Identificér-boksene
Verificér. Verificér-boksen normaliserer alt, der indsættes — store eller små bogstaver, kolon efter hvert to cifre, et sha256=-præfiks, BSD-stilens indpakning SHA256 (file) = hash, en GNU md5sum-linje med filnavnet efter hashen, løse \r\n — og genberegner derefter alle afkrydsede algoritmer over det aktuelle input (tekst eller den valgte fil) og rapporterer hver algoritme, der matcher. Et grønt match betyder “disse bytes er præcis det, udgiveren hashede”; rødt betyder, at ingen af de afkrydsede algoritmer producerede det — prøv at afkrydse flere algoritmer, eller tjek om indsætningen blev afkortet.
Identificér. Identifikatorboksen hasher ikke noget; den læser formen af strengen. Længden indsnævrer kandidaterne: 32 hex-tegn kan være MD5, 40 kan være SHA-1 eller RIPEMD-160, 64 kan være SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Præfikser afslører adgangskode-hashes ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — de er en anden art (se Adgangskode-hash-generator) og beregnes bevidst ikke af denne side. En streng med +, / og =, hvis længde er et multiplum af 4, er mere sandsynligt Base64-kodede data end et hex-digest; værktøjet afkoder den og oplyser den bytelængde, den svarer til.
Hvad identifikation kan og ikke kan fortælle. Længde og tegnsæt er fingeraftryk af formatet, ikke bevis for algoritmen: to 64-hex-tegns-strenge kan stamme fra SHA-256 eller fra afkortet SHA-512. Identifikatoren rangerer mulighederne; Verificér-boksen er den, der beviser, hvilken algoritme de faktiske bytes matcher.
Alle elleve i ét blik
| Algoritme |
Digestion |
Opfundet |
Digest af “The quick brown fox jumps over the lazy dog” |
| MD5 | 128 bit | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bit | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bit | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bit | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bit | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bit | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bit | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bit | før 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bit | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bit | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bit | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Hvert digest i tabellen ovenfor produceres af motorerne på denne side selv — afkryds alle algoritmer, klik på Eksempel, og sammenlign. SHA-3-, Keccak-, RIPEMD-160- og BLAKE2-rækkerne kommer fra den selvhostede crypto-shared.js-kerne, der bruges på tværs af dette websteds kryptoværktøjer.
Ofte stillede spørgsmål
Hvilken boks kan man stole på til en download? Verificér-boksen med SHA-256 afkrydset — de fleste udgivere signerer i dag SHA-256 eller SHA-512. Identificér-boksen nævner blot kandidater; den beviser aldrig noget om filen.
Hvorfor står Keccak-256 overhovedet på listen? Fordi Ethereum, Swarm og nogle få ledgersystemer standardiserede på den præstandardiserede padding. Verificerer man en Ethereum-keccak256, skal man bruge den række, ikke SHA3-256.
Kan to forskellige input dele et digest? Teoretisk ja — uendeligt mange input afbildes til en endelig mængde digests (duepladsprincippet). I praksis er det, “kollisionsmodstand” handler om, at finde et sådant par, før universet dør af varmedød, og alle algoritmerne ovenfor undtagen MD5 og SHA-1 står stadig.
Er hashes kryptering? Nej. Kryptering kan vendes med en nøgle; en hash er en envejsblender. Intet på denne side kan “dekrypteres” tilbage til teksten — og det er en egenskab, ikke en begrænsning.