Digestregels hebben de vorm “ALGORITME hash”, zodat u ze kunt kopiëren naar releasenotities of downloadmanifesten.
Hashgenerator — elk algoritme vanaf nul uitgelegd
In één zin: een cryptografische hashfunctie is een eenrichtingsmixer — ze neemt een willekeurig aantal bytes en perst die tot een vingerafdruk van vaste lengte, zodat dezelfde invoer altijd dezelfde vingerafdruk geeft, maar de vingerafdruk u niet vertelt hoe de invoer weer kan worden opgebouwd. Deze pagina draait er elf volledig binnen het browsertabblad.
Elk algoritme hieronder wordt uitgelegd in dezelfde vier stappen: wat het in gewone woorden is, de intuïtie van hoe het werkt zonder formules, of u het vandaag nog moet gebruiken, en de fouten die mensen er het vaakst mee maken.
MD5
Wat het is. MD5 (1992) comprimeert elke invoer tot een vingerafdruk van 128 bits (32 hexadecimale tekens). Het is ontworpen om snel te zijn op de computers van de jaren negentig, en dat is het ook — precies daarom is het nog overal: downloadpagina's van software, caches voor bestandsdeduplicatie, oude databasesleutels.
Hoe het intuïtief werkt. De invoer wordt in blokken van 64 bytes gesneden. Elk blok wordt viermaal in een roterende status van 128 bits geroerd (vier iets verschillende mengrondes), en na het laatste blok wordt de status als digest afgedrukt. Het roeren bestaat uit optellingen, rotaties en tabelopzoekingen — toen goedkoop, nu goedkoop.
Moet u het gebruiken? Voor checksums waar niemand u probeert te bedriegen — het detecteren van een beschadigde download, het vinden van dubbele bestanden — ja, het meldt beschadiging nog steeds perfect. Voor alles met een tegenstander erin: nee; sinds 2004 kunnen onderzoekers in enkele seconden twee verschillende bestanden met dezelfde MD5 maken, en echte certificaatvervalsingen met MD5-botsingen gebeurden in 2008. Behandel het als een serienummer, niet als slot.
Veelgemaakte fouten. MD5 gebruiken voor wachtwoorden (veel te snel — zie de Wachtwoordhashgenerator voor wat daar hoort); een bestand vertrouwen omdat “de MD5 klopt” terwijl de aanvaller de MD5 ook heeft gepubliceerd; en de hele regel MD5 (bestand) = hash plakken in plaats van alleen de hash — het vak Verifiëren hierboven accepteert beide.
SHA-1
Wat het is. SHA-1 (1995, NSA) levert een digest van 160 bits (40 hex-tekens). Twintig jaar lang was het de standaard integriteitshash van Git, TLS-certificaten en PGP-handtekeningen.
Hoe het intuïtief werkt. Hetzelfde familierecept als MD5, maar met een status van 160 bits, 80 mengrondes per blok van 64 bytes, en een bredere reeks bewerkingen. De extra rondes moesten de mixer moeilijker maken om te reverse-engineeren.
Moet u het gebruiken? Nee, voor alles met een tegenstander. De theoretische doorbreking werd in 2017 praktisch toen Google twee verschillende PDF's met identieke SHA-1-waarden maakte (de SHAttered-aanval, ongeveer 6500 CPU-jaren). Git slaat objecten nog steeds onder SHA-1 op, maar behandelt het alleen als identificatie, en heeft sindsdien botsingsdetectie toegevoegd. Voor nieuw werk gebruikt u SHA-256 of SHA-3.
Veelgemaakte fouten. Geloven dat 160 bits “nog steeds lang genoeg is” — de doorbreking gaat over de interne structuur, niet over brute kracht; en RIPEMD-160 verwarren met SHA-1 omdat beide 40 hex-tekens lang zijn (het identificatievak hierboven onderscheidt ze).
SHA-2: SHA-256, SHA-384 en SHA-512
Wat het is. De SHA-2-familie (2001, NSA) is het werkpaard van moderne integriteitscontrole. SHA-256 levert 256 bits (64 hex-tekens), SHA-512 levert 512 bits, en SHA-384 is SHA-512 met het resultaat afgekapt tot 384 bits — nuttig wanneer een protocol een kortere tag voorschrijft.
Hoe het intuïtief werkt. Blokken van 64 bytes (of 128 bytes voor de varianten van 512 bits) worden via 64 (of 80) rondes van optel-roteer-mengstappen tot een status van 8 woorden gevouwen. Anders dan bij MD5 rekt het schema eerst elk blok uit tot een uitgebreide buffer, en dat is wat de soort aanval verijdelde die MD5 en SHA-1 brak. Een interessant detail: op 64-bit-CPU's is SHA-512 sneller dan SHA-256, omdat het per ronde twee keer zoveel gegevens verwerkt met 64-bitsrekenkunde.
Moet u het gebruiken? Ja — SHA-256 is vandaag het standaardantwoord voor bestandschecksums, codeondertekening en certificaatvingerafdrukken, zonder bekende praktische doorbreking na twee decennia analyse. Gebruik SHA-384/512 wanneer u meer marge wilt of wanneer het platform ze sneller draait.
Veelgemaakte fouten. SHA-256 alleen voor wachtwoorden gebruiken — het is een snelle hash, en snelheid is daar de vijand (gebruik bcrypt/scrypt/Argon2id); en de digestlengte verwarren met sterkte voor botsingsbestendigheid tegen tegenstanders — de lengte bepaalt alleen het plafond.
SHA-3 (SHA3-256 / SHA3-512) en Keccak-256
Wat het is. SHA-3 (2015, gestandaardiseerd uit de Keccak-inzending door Bertoni, Daemen, Peeters en Van Assche) is de derde NIST-hashstandaard. Het deelt niets met de interne opbouw van SHA-2 — het is precies gekozen als onafhankelijke reserve voor het geval SHA-2 ooit valt.
Hoe het intuïtief werkt. In plaats van blokken door een kleine status te roeren, “weekt en perst” Keccak herhaaldelijk: de invoer wordt bit voor bit in een spons van 5×5×64 bits opgenomen, de hele spons wordt door een vaste permutatie geschud (24 rondes van bitsgewijze bewerkingen over de volledige status), en daarna worden de digestbits eruit geperst. Het spons-beeld is het hele idee: capaciteitsbits worden nooit uitgevoerd, en zij maken de functie eenrichtings.
Keccak-256 versus SHA3-256. Ze verschillen in precies één padding-byte. De oorspronkelijke inzending van het Keccak-team paddde het laatste blok met 0x01; NIST wijzigde de standaardpadding naar 0x06 (domeinscheiding die Keccak in de SHA-2-tijd gebruikt). Ethereum nam de oorspronkelijke padding over, dus zijn “keccak256” verschilt bij elke invoer van standaard SHA3-256. Deze pagina biedt beide, apart aanvinkbaar.
Moet u het gebruiken? Ja — ofwel als uw primaire keuze wanneer het beleid een niet-SHA-2-algoritme vraagt, of waar het ecosysteem het al spreekt. Veelgemaakte fouten: aannemen dat SHA3-256 en Keccak-256 inwisselbaar zijn (dat zijn ze niet — vergelijk de twee rijen die deze pagina voor dezelfde invoer maakt); en aannemen dat “SHA-3” SHA-2 vervangt — beide zijn veilig, SHA-2 blijft het breder ingezette.
RIPEMD-160
Wat het is. RIPEMD-160 (1996, het RIPE-consortium van Europese academici, versterkt door Dobbertin, Bosselaers en Preneel) levert 160 bits. Het is een volledig Europees ontwerp, bewust onafhankelijk van de door de NSA ontworpen SHA-familie.
Hoe het intuïtief werkt. Elk blok van 64 bytes wordt verwerkt door twee parallelle lijnen van 80 rondes met verschillende constanten en rotatiehoeveelheden; aan het eind worden de twee lijnen en de oude status gecombineerd. De structuur met twee sporen was de manier van de ontwerpers om de differentiële aanvallen te weerstaan die andere hashes uit de jaren negentig braken.
Moet u het gebruiken? In de praktijk overleeft het vooral binnen andere systemen: Bitcoin-adressen hashen hun publieke sleutels met RIPEMD-160(SHA-256(pk)), oudere OpenPGP-sleutels bieden het als hashoptie, en het is de traditionele hash voor BitTorrent v1-stukken naast SHA-1. Er is geen praktische botsingsaanval, maar de grootte van 160 bits geeft het de kleinste veiligheidsmarge op deze pagina. Voor nieuw zelfstandig gebruik kiest u SHA-256 of SHA-3.
Veelgemaakte fouten. Geloven dat de twee parallelle lijnen het “twee keer zo sterk” maken — de uitvoergrootte is wat de botsingsbestendigheid beperkt; en het verwarren met SHA-1 (dezelfde lengte van 40 hex-tekens; het identificatievak hierboven toont beide mogelijkheden naast elkaar).
BLAKE2b-512 en BLAKE2s-256
Wat het is. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn en Winnerlein) is een hash die is ontworpen voor softwaresnelheid: BLAKE2b richt zich op 64-bitplatforms met uitvoer tot 512 bits, BLAKE2s op 32-bitplatforms met uitvoer tot 256 bits.
Hoe het intuïtief werkt. Het stamt af van de SHA-3-finalist BLAKE, waarvan de kern een gesleutelde permutatie is die is ontleend aan de stroomcipher ChaCha: een 4×4-matrix van woorden wordt geschud door afwisselend kolom- en diagonaalmengstappen — als eerst van boven naar beneden en daarna langs de diagonalen schudden in een rooster — voor 12 (BLAKE2b) of 10 (BLAKE2s) rondes per blok. Omdat die stappen mooi op CPU-instructies passen, is BLAKE2 vaak sneller dan MD5 en biedt het een beveiliging die vergelijkbaar is met SHA-3.
Moet u het gebruiken? Ja — het is een volledig moderne, ongebroken ontwerp, populair in software waar prestaties tellen (pakketintegriteit in sommige ecosystemen, adresseerbare opslag op inhoud, deduplicatie van back-ups) en als snelle MAC. Op deze pagina geeft BLAKE2b-512 de langste digests en is BLAKE2s-256 de compacte moderne optie.
Veelgemaakte fouten. Denken dat “sneller moet zwakker betekenen” — BLAKE2 is sneller door ontwerp, niet door hoeken af te snijden; en niet beseffen dat BLAKE2 ook een sleutel (waarmee het een MAC wordt) of een personalisatiestring accepteert — deze pagina gebruikt het altijd in het gewone, ongesleutelde modus.
De vakken Verifiëren en Identificeren lezen
Verifiëren. Het verificatievak normaliseert wat u ook plakt — hoofdletters of kleine letters, dubbele punten na elke twee cijfers, een voorvoegsel sha256=, het BSD-omhulsel SHA256 (bestand) = hash, een GNU md5sum-regel met de bestandsnaam na de hash, losse \r\n — en herberekent daarna elk aangevinkt algoritme over uw huidige invoer (tekst of het gekozen bestand) en meldt elk algoritme dat overeenkomt. Een groene match betekent “deze bytes zijn precies wat de uitgever heeft gehasht”; rood betekent dat geen van de aangevinkte algoritmen het heeft voortgebracht — vink meer algoritmen aan, of controleer of het geplakte stuk is afgekapt.
Identificeren. Het identificatievak hasht niets; het leest de vorm van de tekenreeks. De lengte beperkt de kandidaten: 32 hexadecimale tekens kunnen MD5 zijn, 40 kunnen SHA-1 of RIPEMD-160 zijn, 64 kunnen SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256 zijn, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Voorvoegsels onthullen wachtwoordhashes ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — dat is een andere soort (zie de Wachtwoordhashgenerator) en wordt bewust niet door deze pagina berekend. Een tekenreeks met +, / en = waarvan de lengte een veelvoud van 4 is, is waarschijnlijker Base64-gecodeerde gegevens dan een hexdigest; de tool decodeert hem en meldt de bytelengte die daarbij hoort.
Wat identificatie wel en niet kan vertellen. Lengte en tekenset zijn vingerafdrukken van het formaat, geen bewijs van het algoritme: twee tekenreeksen van 64 hex-tekens kunnen uit SHA-256 of uit afgekapte SHA-512 komen. Het identificatievak rangschikt de mogelijkheden; het vak Verifiëren is het vak dat bewijst met welk algoritme uw bytes werkelijk overeenkomen.
Alle elf in één oogopslag
| Algoritme |
Digest |
Uitgevonden |
Digest van “The quick brown fox jumps over the lazy dog” |
| MD5 | 128 bits | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bits | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bits | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bits | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bits | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bits | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bits | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bits | vóór 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bits | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bits | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bits | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Elke digest in de tabel hierboven wordt geproduceerd door de engines op deze pagina zelf — vink alle algoritmen aan, klik op Voorbeeld en vergelijk. De rijen SHA-3, Keccak, RIPEMD-160 en BLAKE2 komen uit de zelf gehoste kern crypto-shared.js die op alle cryptotools van deze site wordt gebruikt.
Veelgestelde vragen
Welk vak kan ik vertrouwen voor een download? Het vak Verifiëren, met SHA-256 aangevinkt — de meeste uitgevers ondertekenen tegenwoordig SHA-256 of SHA-512. Het vak Identificeren noemt alleen kandidaten; het bewijst nooit iets over uw bestand.
Waarom staat Keccak-256 überhaupt in de lijst? Omdat Ethereum, Swarm en een paar grootboeksystemen de pre-standaard padding hebben gestandaardiseerd. Als u een Ethereum-keccak256 verifieert, moet u die rij gebruiken, niet SHA3-256.
Kunnen twee verschillende invoeren dezelfde digest delen? Theoretisch wel — oneindig veel invoeren worden afgebeeld op een eindige verzameling digests (het duivenhokprincipe). In de praktijk is het vinden van zo'n paar voor het warmtedood van het heelal wat “botsingsbestendigheid” betekent, en elk algoritme hierboven, behalve MD5 en SHA-1, staat nog steeds overeind.
Zijn hashes versleuteling? Nee. Versleuteling is omkeerbaar met een sleutel; een hash is een eenrichtingsmixer. Niets op deze pagina kan terug worden “ontsleuteld” tot uw tekst — en dat is een kenmerk, geen beperking.