MD5 Hash Generator

MD5-hash genereren van elke tekst

Invoertekst

Draait lokaal · Veilig om secrets te plakken

MD5-hash

MD5-hash verschijnt hier…

Wat is MD5-hashing?

MD5 (Message-Digest Algorithm 5) is een cryptografische hashfunctie die een vaste 128-bit (16-byte) digest produceert van elke invoer, ongeacht de grootte. Gepubliceerd in 1992 door Ronald Rivest als RFC 1321, werd MD5 ontworpen als een snellere opvolger van MD4 en werd al snel een van de meest gebruikte hashfuncties op het internet. Het algoritme verwerkt invoer in 512-bit blokken via vier rondes van elk 16 bewerkingen, met een andere niet-lineaire functie per ronde, om een hexadecimale vingerafdruk van 32 tekens te produceren.

Een hashfunctie is een eenrichtingstransformatie: gegeven een invoer kunt u de hash direct berekenen, maar gegeven alleen de hash kunt u de oorspronkelijke invoer niet terughalen. Zelfs een verandering van één bit in de invoer levert een volledig andere digest op — een eigenschap die het lawine-effect wordt genoemd. MD5 zet een oneindige invoerruimte om naar een vaste 128-bit uitvoerruimte, waardoor botsingen (twee verschillende invoerwaarden die dezelfde hash produceren) wiskundig gegarandeerd bestaan, maar een veilige hashfunctie maakt het vinden ervan rekenkundig onhaalbaar.

Sinds 2004 hebben onderzoekers praktische botsingsaanvallen op MD5 aangetoond, wat betekent dat het niet langer als veilig wordt beschouwd voor digitale handtekeningen, certificaten of elke context waarbij botsingsbestendigheid vereist is. MD5 wordt echter nog steeds veel gebruikt voor niet-beveiligingsdoeleinden: het verifiëren van bestandsintegriteit na downloads, het genereren van cachesleutels, het dedupliceren van inhoud en het aanmaken van deterministische identifiers van tekstreeksen. Voor deze toepassingen maken de snelheid van het algoritme en de brede bibliotheekondersteuning het een praktische keuze. In 2008 publiceerden Marc Stevens en collega's een chosen-prefix collision-aanval, wat betekent dat een aanvaller twee documenten kan samenstellen met willekeurig gekozen voorvoegsels die dezelfde digest delen. Deze techniek werd in 2008 gedemonstreerd op het Chaos Communication Congress door een frauduleus Certification Authority-certificaat samen te stellen. De Flame-malware uit 2012 maakte vervolgens gebruik van chosen-prefix-botsingen om een Microsoft code-signing-certificaat te vervalsen, waardoor malware zich kon voordoen als een legitiem Windows Update-pakket. Deze praktijkexploits bevestigden dat het algoritme cryptografisch gebroken is voor elk vertrouwensanker gebruik en niet mag worden ingezet wanneer een aanvaller de gehashte invoer kan beïnvloeden.

Waarom deze MD5-generator gebruiken?

Genereer MD5-hashes direct zonder iets te installeren of code te schrijven. Plak uw tekst en ontvang de 32-tekens hexadecimale digest in realtime.

Direct hashen
De uitvoer wordt bijgewerkt terwijl u typt. Geen klikken op knoppen, geen wachten — de MD5-digest verschijnt teken voor teken terwijl u de invoer aanpast.
🔒
Privacy-first verwerking
Alle hashing vindt lokaal in uw browser plaats via JavaScript. Uw invoertekst verlaat nooit uw apparaat en wordt nooit naar een server verzonden.
📋
Kopiëren met één klik
Kopieer de hash naar het klembord met één klik. Schakel tussen hexadecimale uitvoer in kleine letters en hoofdletters, afhankelijk van het formaat dat uw systeem verwacht.
🔍
Geen account vereist
Geen aanmelding, geen inloggen, geen gebruikslimieten. Open de pagina en begin direct met hashen. Werkt op elk apparaat met een moderne browser.

MD5-gebruiksscenario's

Frontend-ontwikkeling
Genereer cache-busting hashes voor statische bestanden. Voeg een MD5-digest van de bestandsinhoud toe aan CSS- en JavaScript-URL's zodat browsers de bijgewerkte versie ophalen wanneer de inhoud verandert.
Backend-engineering
Maak deterministische cachesleutels van complexe queryparameters of verzoekbodies. MD5-hashes produceren compacte, vaste-lengte sleutels die goed werken met Redis, Memcached en CDN-cachelagen.
DevOps en CI/CD
Verifieer bestandsintegriteit na overdrachten door MD5-checksums te vergelijken. Veel pakketregisters en artifact-repositories publiceren MD5-digests naast downloads voor snelle verificatie.
QA en testen
Vergelijk MD5-hashes van API-reacties, databasedumps of configuratiebestanden om onverwachte wijzigingen tussen testruns te detecteren zonder de volledige inhoud te vergelijken.
Data-engineering
Dedupliceer records in ETL-pipelines door MD5-hashes van rijinhoud te berekenen. Twee rijen met dezelfde hash zijn kandidaten voor deduplicatie, wat opslag- en verwerkingskosten verlaagt.
Leren en onderwijs
Experimenteer met hashfuncties om eenrichtingstransformaties, het lawine-effect en de reden waarom botsingsbestendigheid belangrijk is voor beveiliging te begrijpen. MD5 is de eenvoudigste bekende hash om te bestuderen.

MD5 vs andere hashalgoritmen

MD5 is de snelste en kortste van de gangbare hashalgoritmen, maar biedt de zwakste beveiligingsgaranties. De onderstaande tabel vergelijkt digestgroottes, standaarden en geschikte gebruiksscenario's voor elk algoritme.

AlgoritmeDigestgrootteHex-lengteStandaardGeschikt voor
MD5128 bits32 hex chars1992 / RFC 1321Checksums, non-security fingerprints
SHA-1160 bits40 hex chars1995 / RFC 3174Legacy git commits (being replaced)
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, backup standard
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Hoe MD5 werkt

MD5 verwerkt invoer via een Merkle-Damgård-constructie: het bericht wordt opgevuld tot een veelvoud van 512 bits, opgesplitst in blokken, en elk blok wordt door vier rondes van 16 bitsgewijze bewerkingen geleid die de invoer mengen met vooraf berekende op sinus gebaseerde constanten. Het resultaat is een 128-bit toestand die de uiteindelijke digest vormt.

Elke ronde past een afzonderlijke niet-lineaire hulpfunctie toe op drie van de vier 32-bit toestandswoorden (A, B, C, D). Ronde 1 gebruikt F(B,C,D) = (B AND C) OR (NOT B AND D) — een bitsgewijze voorwaardelijke selector. Ronde 2 gebruikt G(B,C,D) = (B AND D) OR (C AND NOT D) — een complementaire selector. Ronde 3 gebruikt H(B,C,D) = B XOR C XOR D — een pariteits­functie. Ronde 4 gebruikt I(B,C,D) = C XOR (B OR NOT D) — een asymmetrische combinator. Deze vier functies zorgen ervoor dat elk bit van de invoer de uitvoerdigest beïnvloedt, wat het lawine-effect produceert waardoor kleine invoerwijzigingen grote, onvoorspelbare veranderingen in de resulterende hash veroorzaken.

Input: "hello world"
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)

Het algoritme verloopt in vijf stappen: (1) voeg een 1-bit toe, gevolgd door nullen, totdat de berichtlengte 448 mod 512 is; (2) voeg de oorspronkelijke berichtlengte toe als een 64-bit little-endian geheel getal; (3) initialiseer vier 32-bit toestandsvariabelen (A, B, C, D) met vaste constanten; (4) verwerk elk 512-bit blok via 64 bewerkingen met vier niet-lineaire functies (F, G, H, I), één per ronde van 16 bewerkingen; (5) voeg de resulterende toestand toe aan het lopende totaal en voer de uiteindelijke 128-bit hash uit in little-endian bytesvolgorde.

Codevoorbeelden

MD5-hashes genereren in populaire talen en omgevingen. Let op: MD5 is niet beschikbaar in de browser Web Crypto API — gebruik een bibliotheek of Node.js.

JavaScript (Web Crypto — browser & Node.js)
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module

// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"

// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"
Python
import hashlib

# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result)  # → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a file
with open('file.bin', 'rb') as f:
    md5 = hashlib.md5()
    for chunk in iter(lambda: f.read(8192), b''):
        md5.update(chunk)
    print(md5.hexdigest())
Go
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 5eb63bbbe01eeed093cb22bb8f5acdc3
}
CLI (Linux / macOS)
# Using md5sum (Linux) or md5 (macOS)
echo -n "hello world" | md5sum
# → 5eb63bbbe01eeed093cb22bb8f5acdc3  -

# macOS
echo -n "hello world" | md5
# → 5eb63bbbe01eeed093cb22bb8f5acdc3

# Hash a file
md5sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl md5
# → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3

Veelgestelde vragen

Is MD5 nog steeds veilig te gebruiken?
Het is niet veilig voor beveiligingsgevoelige toepassingen zoals digitale handtekeningen, TLS-certificaten of wachtwoordhashing. Praktische botsingsaanvallen zijn aangetoond sinds 2004, en chosen-prefix-botsingsaanvallen zijn tegenwoordig in seconden uitvoerbaar op gewone hardware. Voor niet-beveiligingsgebruik — checksums, cachesleutels, inhoudsdeduplicatie — blijft het algoritme een praktische en breed ondersteunde keuze.
Wat is het verschil tussen MD5 en SHA-256?
Het MD5-algoritme produceert een 128-bit (32 hexadecimale tekens) digest en is kwetsbaar voor botsingsaanvallen. SHA-256 produceert een 256-bit (64 hexadecimale tekens) digest en heeft geen bekende praktische aanvallen. SHA-256 is ongeveer 30-40% langzamer dan het oudere algoritme op dezelfde hardware, maar de extra veiligheidsmarge maakt het de standaardkeuze voor elke toepassing waarbij integriteitsverificatie bestand moet zijn tegen kwaadwillige manipulatie.
Kan een MD5-hash worden teruggedraaid naar de oorspronkelijke invoer?
Nee. Deze hashfunctie is bedoeld als eenrichting — er gaat informatie verloren tijdens het hashen. Voor korte of veelgebruikte invoerwaarden kunnen aanvallers echter rainbow tables (vooraf berekende hash-naar-plaintext-koppelingen) of brute force gebruiken om de oorspronkelijke invoer te vinden. Daarom mag MD5 nooit worden gebruikt voor wachtwoordopslag. Gebruik in plaats daarvan bcrypt, scrypt of Argon2.
Waarom produceren verschillende tools soms verschillende MD5-hashes voor dezelfde tekst?
De meest voorkomende oorzaak zijn coderingsverschillen. Het algoritme werkt op bytes, niet op tekens. De reeks 'hello' produceert verschillende hashes wanneer gecodeerd als UTF-8 versus UTF-16 versus Latin-1. Een andere veel voorkomende oorzaak zijn afsluitende regeleindes: echo voegt in de meeste shells een regeleinde (\n) toe, tenzij u echo -n gebruikt. Controleer altijd welke exacte bytes worden gehasht.
Hoe lang duurt het berekenen van een MD5-hash?
Het algoritme is extreem snel. Op moderne hardware verwerkt het gegevens met 3-6 GB/s op één CPU-kern. Een GPU kan miljarden checksums per seconde berekenen. Deze snelheid is een voordeel voor bestandsverificatie, maar een nadeel voor wachtwoordhashing, waarbij langzamere algoritmen (bcrypt, Argon2) juist de voorkeur krijgen omdat ze bestand zijn tegen brute-force-aanvallen.
Wat is een MD5-botsing en waarom is dat belangrijk?
Een botsing treedt op wanneer twee verschillende invoerwaarden dezelfde hashdigest produceren. In 2004 toonde Xiaoyun Wang de eerste praktische botsing tegen MD5 aan. In 2012 maakte de Flame-malware gebruik van een botsing om een Microsoft code-signing-certificaat te vervalsen. Tegenwoordig kunnen identical-prefix-botsingen in minder dan een minuut worden berekend. Dit maakt het algoritme ongeschikt voor elke toepassing die botsingsbestendigheid vereist, zoals digitale handtekeningen of certificate pinning.
Moet ik MD5 of CRC32 gebruiken voor bestandschecksums?
Deze checksum is een betere keuze dan CRC32 voor bestandsintegriteitsverificatie. CRC32 is een 32-bit foutdetectiecode die is ontworpen om toevallige beschadiging bij overdracht op te sporen, niet opzettelijke manipulatie. De kleine uitvoerruimte maakt botsingen triviaal eenvoudig te construeren. MD5 biedt een 128-bit digest met een veel sterkere accidentele botsingsbestendigheid. Voor kwaadwillende scenario's (verificatie van downloads van niet-vertrouwde bronnen) gebruikt u SHA-256.