Hash-generator

Beregner MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, Keccak-256, RIPEMD-160, BLAKE2b eller BLAKE2s-digests af enhver tekst eller fil — praktisk til checksums, integritetskontrol og cachenøgler. Indsæt et forventet digest for at verificere det mod input, eller indsæt en ukendt hash-streng for at identificere den algoritme, den sandsynligvis stammer fra. SHA-1/256/384/512 kommer fra browserens egen WebCrypto; de øvrige er selvstændige implementeringer i ren JavaScript, så alt kører lokalt. Se også Tilfældige tal-generator for seedede tilfældige følger.
Kører helt lokalt — intet uploades. Input op til 200 MB.
Input: Algoritmer:
Outputformat: SHA-1 er forældet — foretræk SHA-256/512, medmindre den er nødvendig.
Digestlinjer har formen “ALGORITME  hash”, så de kan kopieres ind i udgivelsesnoter eller downloadmanifester.
Indsæt det digest, en downloadside eller et manifest har givet. Værktøjet tolererer store og små bogstaver, mellemrum, kolon, præfikser som sha256=, indpakninger som MD5 (file.exe) = og flerlinjet md5sum-output og sammenligner derefter med de algoritmer, der er afkrydset ovenfor.
Indsæt en ukendt hash-streng. Værktøjet læser dens længde, tegnsæt og præfikser og viser de algoritmer, der kunne have frembragt den — fra et almindeligt hex-digest til PHC-stilede adgangskode-hashes som $2b$… eller $argon2id$….
Valg af algoritme:
SHA-256 er den fornuftige standard til integritetskontrol i dag. SHA-512 er stærkere og kører hurtigere på 64-bit-hardware, til prisen af længere output; SHA-384 er mellemvalget, når der er brug for et SHA-2-digest med afkortet længde. SHA-3 er en uafhængigt designet NIST-standard (ikke en SHA-2-opgradering) og er standardsvaret, når man vil have en algoritme uden fælles afstamning med SHA-2; Keccak-256 er den præstandardiserede variant, som Ethereum og nogle få andre systemer bruger, og den afviger fra SHA3-256 i én padding-byte. BLAKE2b/BLAKE2s er hurtige moderne hashes designet til softwarebrug; RIPEMD-160 er et ældre design, der stadig bruges i Bitcoin- og OpenPGP-sammenhænge. SHA-1 og MD5 er kryptografisk brudt over for fjendtlige input, men er stadig korrekte og udbredt til deduplikering, ældre systemer og ikke-adversarielle checksums — brug dem aldrig, hvor en angriber kan vælge indholdet. Ingen hash er i dag “post-kvantemodstandsdygtig” i den forstand, at kvantecomputere truer signaturer og nøgleudveksling først; Grovers algoritme halverer kun den effektive hashlængde, så SHA-256 ligger allerede komfortabelt over den praktiske grænse. Hashes er deterministiske: de samme bytes giver altid det samme digest, og netop det gør dem nyttige til at verificere, at en download eller konfigurationsfil er intakt.
Leder man efter den kinesiske nationale hash?
SM3 (GB/T 32905-2016), digestet, der er påbudt i kinesisk kommerciel kryptografi, er ikke en del af denne side — den har sit eget værktøj med HMAC-SM3-understøttelse på siden SM3-hash-generator, sammen med resten af SM-familien: SM4 (blokchiffer), SM2 (signaturer og kryptering) og SM9 (identitetsbaseret kryptografi).
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”
MD5128 bit19929e107d9d372bb6826bd81d3542a419d6
SHA-1160 bit19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256 bit2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384 bit2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512 bit200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256 bit201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512 bit201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256 bitfør 20154d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160 bit199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512 bit2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256 bit2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

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.