Md5sum

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.

MD5-bestanden maken

[bewerken | brontekst bewerken]

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:

  • Er moeten twee spaties, of een spatie en een asterisk, tussen elke 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.
  • De regels van het bestand moeten met UNIX end-of-line-karakters eindigen anders volgt een waarschuwing dat het bestand niet gelezen kan worden. Met dos2unix kunnen de bestanden die voor DOS/Windows zijn geformatteerd, geconverteerd worden.

Controleer hashes

[bewerken | brontekst bewerken]

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

Linux, GNU en BSD

[bewerken | brontekst bewerken]

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.