Een checksum is een cijfer dat dient als een som van correcte cijfers in gegevens, die later kunnen worden gebruikt om fouten in de gegevens op te sporen tijdens opslag of verzending. MD5-sommen (Message Digest 5) kunnen als controlesom worden gebruikt om bestanden of tekenreeksen in een Linux-bestandssysteem te verifiëren.
MD5-sommen zijn 128-bits tekenreeksen (cijfers en letters) die het resultaat zijn van het uitvoeren van het MD5-algoritme tegen een specifiek bestand. Het MD5-algoritme is een populaire hash-functie die een 128-bits message digest genereert, aangeduid als een hash-waarde, en wanneer u er een genereert voor een bepaald bestand, is deze precies ongewijzigd op elke machine, ongeacht het aantal keren dat hij wordt gegenereerd.
Het is normaal gesproken erg moeilijk om twee verschillende bestanden te vinden die resulteren in dezelfde strings. Daarom kunt u md5sum gebruiken om de integriteit van digitale gegevens te controleren door vast te stellen dat een bestand of ISO dat u hebt gedownload een bit-voor-bit kopie is van het bestand of ISO op afstand.
Suggested Read: Progress – Monitor Progress for (cp, mv, dd, tar, etc.) Commands in Linux
In Linux berekent en controleert het programma md5sum de MD5 hash-waarden van een bestand. Het is een onderdeel van het GNU Core Utilities pakket, en wordt daarom voorgeïnstalleerd op de meeste, zo niet alle Linux distributies.
Kijk eens naar de inhoud van /etc/group
opgeslagen als groups.cvs hieronder.
Het onderstaande md5sums commando genereert een hash waarde voor het bestand als volgt:
$ md5sum groups.csvbc527343c7ffc103111f3a694b004e2f groups.csv
Wanneer u probeert de inhoud van het bestand te wijzigen door de eerste regel te verwijderen, root:x:0:
en vervolgens het commando voor een tweede keer uitvoert, probeert u de hash-waarde te observeren:
$ md5sum groups.csv46798b5cfca45c46a84b7419f8b74735 groups.csv
U zult zien dat de hash waarde nu is veranderd, wat aangeeft dat de inhoud van het bestand is gewijzigd.
Nu, zet de eerste regel van het bestand terug, root:x:0:
en hernoem het naar group_file.txt en voer het onderstaande commando uit om de hash waarde weer te genereren:
$ md5sum groups_list.txtbc527343c7ffc103111f3a694b004e2f groups_list.txt
Uit de output hierboven blijkt dat de hash waarde nog steeds hetzelfde is, zelfs als het bestand een andere naam heeft gekregen, met de originele inhoud.
Belangrijk: md5 sommen verifiëren/werken alleen met de inhoud van het bestand en niet met de bestandsnaam.
Het bestand groups_list.txt is een duplicaat van groups.csv, dus probeer de hash waarde van de bestanden tegelijk te genereren als volgt.
U zult zien dat ze beide gelijke hash-waarden hebben, dit komt omdat ze exact dezelfde inhoud hebben.
$ md5sum groups_list.txt groups.csv bc527343c7ffc103111f3a694b004e2f groups_list.txtbc527343c7ffc103111f3a694b004e2f groups.csv
U kunt de hash-waarde(n) van een bestand(en) omzetten in een tekstbestand en opslaan, delen met anderen. Voor de twee bestanden hierboven kunt u het onderstaande commando uitvoeren om de gegenereerde hashwaarden om te leiden naar een tekstbestand voor later gebruik:
$ md5sum groups_list.txt groups.csv > myfiles.md5
Om te controleren of de bestanden niet zijn gewijzigd sinds u de controlesom hebt gemaakt, voert u het volgende commando uit. U zou in staat moeten zijn om de naam van elk bestand te zien samen met “OK”.
Suggested Read: Find Top 15 Processes by Memory Usage in Linux
De -c
of --check
optie vertelt md5sums commando om MD5 sommen te lezen van de bestanden en ze te controleren.
$ md5sum -c myfiles.md5groups_list.txt: OKgroups.csv: OK
Houd er rekening mee dat na het maken van de checksum, u de bestanden niet kunt hernoemen, anders krijgt u een “No such file or directory” foutmelding, wanneer u de bestanden met nieuwe namen probeert te verifiëren.
Bijvoorbeeld:
$ mv groups_list.txt new.txt$ mv groups.csv file.txt$ md5sum -c myfiles.md5
md5sum: groups_list.txt: No such file or directorygroups_list.txt: FAILED open or readmd5sum: groups.csv: No such file or directorygroups.csv: FAILED open or readmd5sum: WARNING: 2 listed files could not be read
Het concept werkt ook voor strings, in de onderstaande commando’s betekent -n
niet de laatste newline uitvoeren:
$ echo -n "Tecmint How-Tos" | md5sum - afc7cb02baab440a6e64de1a5b0d0f1b -
$ echo -n "Tecmint How-To" | md5sum - 65136cb527bff5ed8615bd1959b0a248 -
In deze handleiding heb ik laten zien hoe je hash waarden voor bestanden genereert, een checksum maakt om later de integriteit van bestanden in Linux te verifiëren. Hoewel er beveiligingslekken in het MD5 algoritme zijn ontdekt, blijven MD5 hashes nog steeds nuttig, vooral als je de partij vertrouwt die ze maakt.