md5sum is een computerprogramma dat 128-bits MD5-hashes berekent en verifieert, zoals beschreven in RFC 1321.[1] Een MD5-hash is een compacte, digitale vingerafdruk van een bestand. Net als bij de hashingalgoritmes uit de SHA-familie, zoals SHA-256 en SHA-512, bestaan er in theorie een onbeperkt aantal bestanden die dezelfde hash hebben.
Md5sum
wordt gebruikt om de integriteit van bestanden te controleren, aangezien vrijwel elke wijziging in een bestand de MD5-hash zal veranderen. Meestal wordt md5sum
gebruikt om te controleren of een bestand niet beschadigd is door een fout tijdens de bestandsoverdracht of een schijffout bij de opslag. Het programma md5sum
is opgenomen in de meeste Unix-achtige besturingssystemen, of compatibiliteitslagen zoals Cygwin.[2]
Het onderliggende MD5-algoritme wordt echter niet meer voor alle doeleinden voldoende veilig geacht. Alhoewel md5sum
goed geschikt is om bekende bestanden te identificeren in situaties die niet beveiligingsgerelateerd zijn, zou het niet moeten worden gebruikt als er een kans is dat bestanden doelbewust en met kwade opzet geconstrueerd zijn. In het laatste geval wordt het gebruik van nieuwere hashing tools, zoals sha256sum
en sha512sum
, aanbevolen.[3][4][5][6]
Het is echter zeer onwaarschijnlijk dat twee niet-identieke bestanden in werkelijkheid dezelfde MD5-hash hebben, of dat ze specifiek met dat doel aangemaakt kunnen zijn.
Alle bestanden worden geacht in de huidige werkdirectory te staan. In alle voorbeelden kan md5sum
vervangen worden door sha256sum
of sha512sum
. De enige verschillen zijn dat de hashes dan 256 en 512 bits lang zijn, in plaats van 128 bits, en dat de tijden die nodig zijn om de hashes te berekenen langer zijn.
Maak het hash-bestand hash.md5
van drie txt
-bestanden:
$ md5sum filetohashA.txt filetohashB.txt filetohashC.txt > hash.md5
Het MD5-bestand is geproduceerd.
Het bestand bevat drie regels met hash- en bestandsnaamparen:
$ cat hash.md5 595f44fec1e92a71d3e9e77456ba80d1 filetohashA.txt 71f920fa275127a7b60fa4d4d41432a3 filetohashB.txt 43c191bf6d6c3f263a8cd0efd4a058ab filetohashC.txt
Opmerkingen:
md5sum
-waarde en de bestandsnaam staan. De tweede spatie geeft de tekstmodus en de asterisk geeft de binaire modus aan. Anders zal een foutmelding afgedrukt worden. Veel programma's maken geen onderscheid tussen beide modi.dos2unix
kunnen de bestanden die voor DOS/Windows zijn geformatteerd, geconverteerd worden.Met de -c
-optie (of de --check
-optie) worden de hashes geverifieerd:
$ md5sum -c hash.md5
filetohashA.txt: OK
filetohashB.txt: OK
filetohashC.txt: OK
Als de --quiet
-optie wordt toegevoegd, dan worden alleen de foutmeldingen afgedrukt.
$ md5sum -c --quiet hash.md5
In dit geval verschijnt er na het uitvoeren van de opdracht geen uitvoer omdat er geen fouten geconstateerd zijn. Het toevoegen van de --quiet
-optie is handig als de lijst te controleren bestanden lang is en er maar enkele fouten te verwachten zijn.
Controle van een enkele hash kan met de opdracht:
$ echo D43F2404CA13E22594E5C8B04D3BBB81 filetohashA.txt | md5sum -c -
filetohashA.txt: OK
De hierboven beschreven hashfuncties zijn de functies zoals door GNU geïmplementeerd in de Core Utils.[2] Afwijkende Linuxdistributies, FreeBSD en UNIX-varianten die geen GNU Core Utils gebruiken, maken meestal gebruik van andere functies om de MD5- en SHA-hashes te berekenen. Andere implementaties van hashfuncties kunnen andere namen, andere opties en andere eigenschappen hebben dan de hashfuncties in de hierboven beschreven voorbeelden.