De checksum van een bestand berekenen
- Dashboard
- Documentatie
- API
Wat is een checksum?
Een checksum (controlegetal, soms gespeld als chksum) is een unieke digitale vingerafdruk berekend uit de inhoud van een bestand door een hash-algoritme. Deze vingerafdruk, of fingerprint, wordt over het algemeen weergegeven door een hexadecimale tekenreeks met een vaste lengte.
De fundamentele eigenschap van een goed hash-algoritme is het lawine-effect: elke wijziging van het bronbestand, zelfs van één enkele bit, produceert een radicaal andere checksum. Twee bestanden met strikt identieke inhoud produceren altijd dezelfde checksum, ongeacht de bestandsnaam, de wijzigingsdatum of het besturingssysteem.
De checksum dient voornamelijk om de integriteit van een bestand te verifiëren: als de lokaal herberekende vingerafdruk overeenkomt met die aangekondigd door de uitgever, is het bestand intact. Anders is het gewijzigd, beschadigd tijdens het transport of gemodificeerd.
Waar dient het concreet voor?
- De integriteit van een download verifiëren: een Linux ISO (Debian, Ubuntu, Fedora, Arch), een Docker-image, een Windows-installer of een open source-archief publiceren systematisch een officiële checksum. Deze lokaal herberekenen bevestigt dat het bestand compleet en niet gewijzigd is.
- Corruptie tijdens transport detecteren: een onderbroken download, een defecte schijfsector, een onstabiel RAM-geheugen, een grillige netwerkkabel of een kopie op een USB-stick kunnen bytes beschadigen. De checksum onthult onmiddellijk deze stille fouten.
- Handtekening-vingerafdruk: bevestigen dat een bestand inderdaad afkomstig is van de verwachte auteur wanneer de checksum wordt verspreid via een veilig kanaal (HTTPS, GPG-handtekening). Het is het mechanisme aan de basis van Linux-pakketrepositories en app stores.
- Versionering en caching: Git identificeert elke commit, blob en tree door een SHA-1-hash (in migratie naar SHA-256). CDN's en webbundlers (Webpack, Vite, esbuild) injecteren een hash in de bestandsnaam (
app.4a8f2c.js) om de browsercache automatisch te invalideren bij een wijziging. - Duplicaatdetectie en deduplicatie: incrementele back-ups (Borg, Restic, rsync), bestandssystemen (ZFS) en object storage identificeren identieke blokken aan hun hash om slechts één kopie op te slaan.
- Upload-validatie: een client verzendt de verwachte checksum, de server berekent deze opnieuw bij ontvangst. AWS S3 bijvoorbeeld accepteert een
Content-MD5- ofx-amz-checksum-sha256-header om een beschadigde upload te weigeren. - Threat intelligence en antivirus: VirusTotal en antivirus-uitgevers indexeren kwaadaardige bestanden op hun SHA-256-hash, wat detectie mogelijk maakt zonder het volledige binaire bestand te verzenden.
Ondersteunde algoritmen en verschillen
- MD5 (128 bits, 32 hexadecimale tekens): snel, breed verspreid, maar cryptografisch gebroken. MD5-botsingen zijn berekenbaar in enkele seconden op standaard hardware sinds 2004. Te gebruiken alleen voor niet-kwaadaardige integriteitscontrole (download tegen een netwerkstoring, lokale back-up). Verboden voor elke beveiligings-, handtekening- of authenticatiefunctie.
- SHA-1 (160 bits, 40 hexadecimale tekens): verouderd voor cryptografie sinds de SHAttered-aanval van 2017, die een echte botsing tussen twee verschillende PDF's heeft aangetoond. Git gebruikt het nog steeds standaard maar migreert naar SHA-256. Niet meer gebruiken om te ondertekenen of authenticeren.
- SHA-256 (256 bits, 64 hexadecimale tekens): moderne standaard, lid van de SHA-2-familie. Basis van moderne TLS-certificaten, Linux-pakkethandtekeningen (apt, dnf, pacman), Bitcoin en officiële integriteitscontroles. Trager dan MD5 maar veilig in de huidige stand van kennis.
- SHA-512 (512 bits, 128 hexadecimale tekens): 64-bits variant van SHA-2. Manipuleert native 64-bits woorden, wat het soms sneller maakt dan SHA-256 op 64-bits CPU. Langere vingerafdruk, hogere beveiligingsmarge.
- CRC32 (32 bits, 8 hexadecimale tekens): niet-cryptografisch, ultrasnel, specifiek ontworpen om transmissiefouten te detecteren. Gebruikt door Ethernet, ZIP, PNG, gzip. Beschermt niet tegen kwaadwilligheid: een aanvaller kan triviaal een bestand smeden met dezelfde CRC32 als een ander. Geschikt voor snelle hardwarecontroles, niet voor beveiliging.
Gebruiksgevallen
- Een Linux ISO verifiëren: Debian, Ubuntu, Fedora en Arch publiceren de SHA-256 en SHA-512 van elke officiële image, vaak GPG-ondertekend.
- Een ondertekend binair valideren: bevestigen dat een uitvoerbaar bestand gedownload vanaf een mirror niet is vervangen door een gepiegde versie.
- Twee versies vergelijken: voor en na een wijziging bewijst een identieke checksum bit-voor-bit identiteit, zonder de bestanden te hoeven verspreiden.
- Upload-validatie: de client verzendt een checksum, de server berekent deze opnieuw bij ontvangst om het ontbreken van corruptie te bevestigen.
- Fingerprinting: detectie van bots of bekende bestanden in vingerafdruk-databases (antivirus, threat intelligence, zoeken naar duplicaten).
Hoe u het gebruikt
- Sleep en zet het bestand neer in de daarvoor bestemde zone, of gebruik de selectieknop.
- Kies het algoritme: MD5, SHA-1, SHA-256, SHA-512 of CRC32.
- De checksum verschijnt, klaar om te kopiëren.
- Vergelijk de verkregen waarde met die van de referentie (gepubliceerd door de uitgever of lokaal bewaard).
De berekening gebeurt lokaal in uw browser, zonder het bestand naar een externe server te verzenden. De inhoud blijft vertrouwelijk.
Hoe verifieer ik een download met checksum?
De standaard verificatieprocedure is als volgt:
- De officiële site publiceert de verwachte checksum, bijvoorbeeld
d41d8cd98f00b204e9800998ecf8427evoor MD5 of een tekenreeks van 64 tekens voor SHA-256. - Download het bestand.
- Bereken de checksum, ofwel met deze tool, ofwel via de opdrachtregel.
- Vergelijk: als beide tekenreeksen strikt identiek zijn, teken voor teken, is het bestand intact. Als ze verschillen, zelfs van één teken, is het bestand beschadigd of gemanipuleerd: gebruik het niet, download het opnieuw.
Op de opdrachtregel onder Linux:
# Calculer le checksum
md5sum fichier.iso
sha1sum fichier.iso
sha256sum fichier.iso
sha512sum fichier.iso
cksum fichier.iso # CRC32 + taille
# Vérifier automatiquement depuis un fichier .sha256 publié par l'éditeur
sha256sum -c fichier.iso.sha256
# Affiche : "fichier.iso: OK" si le checksum correspond
Onder macOS:
md5 fichier.iso
shasum -a 1 fichier.iso
shasum -a 256 fichier.iso
shasum -a 512 fichier.iso
# Vérification depuis un fichier de référence
shasum -a 256 -c fichier.iso.sha256
Onder Windows (PowerShell):
Get-FileHash fichier.iso -Algorithm MD5
Get-FileHash fichier.iso -Algorithm SHA1
Get-FileHash fichier.iso -Algorithm SHA256
Get-FileHash fichier.iso -Algorithm SHA512
# Comparer à une valeur attendue
(Get-FileHash fichier.iso -Algorithm SHA256).Hash -eq "ABC123..."
Snelle vergelijking van algoritmen
| Algoritme | Grootte | Snelheid | Aanbevolen gebruik |
|---|---|---|---|
| CRC32 | 32 bits | Zeer snel | Detectie van netwerk- of opslagfouten, niet-cryptografisch |
| MD5 | 128 bits | Snel | Alleen niet-vijandige integriteit, te vermijden bij beveiliging |
| SHA-1 | 160 bits | Snel | Verouderd, oude compatibiliteit (Git, oude pakketten) |
| SHA-256 | 256 bits | Gematigd | Huidige standaard, integriteitsverificatie en handtekeningen |
| SHA-512 | 512 bits | Snel op 64 bits | Integriteitsverificatie, hogere beveiligingsmarge |
FAQ
MD5 of SHA-256 om mijn ISO te verifiëren?
SHA-256 standaard. Bijna alle moderne Linux-distributies publiceren SHA-256 en SHA-512, soms naast MD5 voor historische compatibiliteit. Als de uitgever alleen MD5 publiceert en u een compromittering vreest, vraag dan SHA-256 of verifieer de GPG-handtekening van het checksumbestand. Als u alleen een corruptie tijdens het downloaden vreest, volstaat MD5 technisch.
Garandeert de checksum de beveiliging van mijn bestand?
Nee, niet alleen. Een checksum bewijst integriteit, niet authenticiteit. Als een aanvaller de downloadserver beheert, kan hij een gewijzigd bestand en zijn gewijzigde checksum publiceren. Echte beveiliging komt van een digitale handtekening (GPG, code signing) die de checksum koppelt aan een bekende privésleutel. Haal altijd de checksum op via HTTPS of, beter, via een verifieerbare GPG-handtekening.
Mijn checksum komt niet overeen, wat te doen?
Verifieer eerst dat u het juiste algoritme vergelijkt: een SHA-256 kan niet overeenkomen met een SHA-1. Begin vervolgens opnieuw met de download, idealiter vanaf een andere mirror: de meest voorkomende oorzaak is een netwerkstoring. Als de afwijking aanhoudt na meerdere pogingen, vermoed dan een compromittering van de mirror: ga terug naar de officiële bron en verifieer de GPG-handtekening als deze bestaat. Voer het bestand nooit uit of gebruik het niet zolang de checksum niet overeenkomt.
Waarom is MD5 verouderd?
MD5 lijdt aan praktische botsingen: het is mogelijk om twee verschillende bestanden te construeren met exact dezelfde MD5-hash in enkele seconden. Deze eigenschap schendt de functie zelf van een cryptografische hash. Concreet kan een aanvaller een kwaadaardig binair bestand creëren met dezelfde MD5 als een legitiem binair bestand. SHA-1 lijdt aan hetzelfde probleem sinds 2017 (SHAttered-aanval). Alleen SHA-256, SHA-512 en hun varianten blijven beschouwd als veilig in 2026.
Verschil tussen hash en checksum?
Een hash is het generieke resultaat van een hash-functie. Een checksum is een hash die specifiek wordt gebruikt om de integriteit van gegevens te verifiëren. Alle checksums zijn hashes, maar niet alle hashes zijn checksums: een wachtwoordhash (bcrypt, argon2) dient voor authenticatie, een hash in een hashtabel dient om snel te indexeren. De term fingerprint of vingerafdruk is een gangbaar synoniem van checksum.
Volstaat CRC32 voor mijn behoeften?
CRC32 volstaat als u alleen accidentele corruptie wilt detecteren op een niet-vijandig kanaal: interne netwerkoverdracht, ZIP-archiefverificatie, geheugenconsistentiecontrole. Met slechts 32 bits hebben twee willekeurige bestanden ongeveer 1 op 4 miljard kans om bij toeval dezelfde CRC32 te hebben, wat voldoende is voor foutdetectie. CRC32 is onvoldoende zodra een aanvaller de inhoud kan beïnvloeden: het is triviaal om een bestand te smeden met een doel-CRC32. Voor elke verificatie tegen een kwaadaardig risico, gebruik SHA-256.
Waarom verschilt mijn checksum afhankelijk van het OS?
De checksum van dezelfde binaire inhoud is overal identiek. Als u twee verschillende resultaten krijgt, is het bestand werkelijk verschillend: regeleinden (CRLF Windows tegen LF Unix) na een FTP-overdracht in tekstmodus, tekstcodering gewijzigd bij het openen, metagegevens toegevoegd door het systeem (Spotlight macOS resolutie, uitgebreide attributen), of stille hercompressie door een overdrachtsclient. Draag altijd over in binaire modus.
Checksum of digitale handtekening?
Een checksum bewijst dat een bestand niet is gewijzigd tussen publicatie en ontvangst, op voorwaarde dat de checksum via een veilig kanaal wordt opgehaald. Een digitale handtekening (GPG, PGP, Authenticode code signing) bewijst bovendien de identiteit van de auteur dankzij een privésleutel. De handtekening omvat en versterkt de checksum: de standaardpraktijk bij Debian, Tor of Bitcoin Core is om in GPG het checksumbestand te ondertekenen en vervolgens deze checksums te gebruiken om de binaire bestanden te verifiëren.
Veelgestelde vragen
Wordt het bestand naar een server verzonden om de checksum te berekenen?
Nee. De berekening wordt volledig in uw browser uitgevoerd dankzij de Web Crypto API en lokale JavaScript-routines. De inhoud van het bestand verlaat uw machine niet, waardoor u in alle vertrouwelijkheid gevoelige documenten, versleutelde archieven of databasedumps kunt hashen. Deze aanpak garandeert ook stabiele prestaties, onafhankelijk van de bandbreedte.
Welke bestandsgrootte kan ik hashen met deze tool?
De berekening gebeurt in streaming per blokken, dus de limiet hangt voornamelijk af van het geheugen en de tijd die uw browser aan de bewerking kan besteden. Enkele honderden megabytes passen zonder moeite op een standaard werkstation. Voor bestanden van meerdere gigabytes (volledige ISO, omvangrijke dump), verkies de systeem-opdrachtregel (sha256sum, Get-FileHash) die de schijf- en CPU-bronnen beter benut.
Wat is het verschil tussen het hashen van een bestand en het hashen van tekst?
Het algoritme is exact hetzelfde, alleen de invoer verandert. Voor tekst hashen we de bytesequentie van de tekenreeks in een gegeven codering (typisch UTF-8). Voor een bestand hashen we de ruwe binaire inhoud, byte voor byte, inclusief eventuele headers of ingebedde metagegevens. Daarom kan een tekstbestand en de inhoud ervan gekopieerd in een formulier verschillende checksums geven (BOM, regeleinden, codering).
Waarom varieert de checksum van een ZIP-archief bij elke aanmaak?
De meeste archiveerders (ZIP, TAR.GZ, 7z) slaan variabele metagegevens op zoals aanmaakdatum, bestandsvolgorde of compressie-indicatoren. Een archief opnieuw aanmaken met dezelfde inhoud produceert dus een ander binair bestand en een andere checksum. Om reproduceerbare archieven te krijgen, gebruikt u tools zoals diffoscope, strip-nondeterminism of de opties --mtime en --sort=name van tar.
Bestaan er snellere alternatieven dan SHA-256 om integriteit te verifiëren?
Ja. BLAKE2 en BLAKE3 zijn moderne cryptografische hash-functies, ontworpen om sneller te zijn dan SHA-256 terwijl ze een equivalent of hoger beveiligingsniveau bieden. BLAKE3 benut bijzonder goed SIMD- en multi-core-parallelisme, wat het zeer efficiënt maakt op grote bestanden. Voor pure niet-vijandige foutdetectie is xxHash onverslaanbaar qua snelheid, maar blijft niet-cryptografisch.
Kan ik twee bestanden vergelijken zonder hun volledige hash te berekenen?
Voor twee lokale bestanden is een directe binaire vergelijking (cmp onder Unix, fc /b onder Windows) sneller dan beide hashen. De hash wordt nuttig wanneer de bestanden niet op dezelfde machine staan, of wanneer men een korte vingerafdruk wil behouden zonder het origineel te bewaren. Voor frequente controles op grote volumes, indexeer de hashes in een database en vergelijk de vingerafdrukken in plaats van de volledige bestanden.
Voorbeeldverzoek
curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
-F "file=@/path/to/file" \
-F "algorithm=adler32"
Invoerschema
| Veld | Type | Vereist | Standaard |
|---|---|---|---|
file |
file | ✓ | – |
algorithm |
choice (adler32, crc32, crc32b, crc32c, fnv132, fnv164, fnv1a32, fnv1a64, gost, gost-crypto, haval128,3, haval128,4, haval128,5, haval160,3, haval160,4, haval160,5, haval192,3, haval192,4, haval192,5, haval224,3, haval224,4, haval224,5, haval256,3, haval256,4, haval256,5, joaat, md2, md4, md5, murmur3a, murmur3c, murmur3f, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512/224, sha512/256, snefru, snefru256, tiger128,3, tiger128,4, tiger160,3, tiger160,4, tiger192,3, tiger192,4, whirlpool, xxh128, xxh3, xxh32, xxh64) | ✓ | – |
deze tool verwacht een bestand - gebruik Content-Type multipart/form-data in plaats van application/json
Endpoints
GET https://cdrn.fr/api/v1/tools- toont alle beschikbare toolsGET https://cdrn.fr/api/v1/tools/hash-file-generator- geeft het schema van deze tool terugPOST https://cdrn.fr/api/v1/tools/hash-file-generator/execute- voert deze tool uit met een JSON-payload