Zoeken op website

Leer hoe u bestanden kunt genereren en verifiëren met MD5 Checksum in Linux


Een controlesom is een cijfer dat dient als de som van de juiste cijfers in gegevens, en dat later kan worden gebruikt om fouten in de gegevens tijdens opslag of verzending op te sporen. MD5 (Message Digest 5) bedragen kunnen worden gebruikt als controlesom om bestanden of tekenreeksen in een Linux-bestandssysteem te verifiëren.

MD5-sommen zijn tekenreeksen van 128 bits (cijfers en letters) die resulteren uit het uitvoeren van het MD5-algoritme op een specifiek bestand. Het MD5-algoritme is een populaire hash-functie die een 128-bits berichtsamenvatting genereert, ook wel een hash-waarde genoemd, en wanneer u er een genereert voor een bepaald bestand, blijft deze op elke machine precies ongewijzigd, ongeacht het aantal keren dat deze wordt gegenereerd.

Normaal gesproken is het erg moeilijk om twee verschillende bestanden te vinden die resulteren in dezelfde tekenreeksen. 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 externe bestand of de ISO.

Voorgesteld lezen: Vooruitgang – Bewaak de voortgang voor (cp, mv, dd, tar, etc.) opdrachten in Linux

In Linux berekent en controleert het programma md5sum de MD5-hashwaarden van een bestand. Het is een onderdeel van het GNU Core Utilities-pakket en wordt daarom vooraf geïnstalleerd op de meeste, zo niet alle Linux-distributies.

Bekijk hieronder de inhoud van /etc/group opgeslagen als groups.cvs.

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,aaronkilik
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:aaronkilik
floppy:x:25:
tape:x:26:
sudo:x:27:aaronkilik
audio:x:29:pulse
dip:x:30:aaronkilik

De onderstaande opdracht md5sums genereert als volgt een hashwaarde voor het bestand:

md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

Wanneer u probeert de inhoud van het bestand te wijzigen door de eerste regel root:x:0: te verwijderen en de opdracht vervolgens een tweede keer uit te voeren, probeer dan de hash-waarde te observeren:

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

U zult merken dat de hashwaarde nu is gewijzigd, wat aangeeft dat de inhoud van het bestand is gewijzigd.

Plaats nu de eerste regel van het bestand terug, root:x:0: en hernoem het naar group_file.txt en voer de onderstaande opdracht uit om de hash-waarde opnieuw te genereren:

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

Uit de bovenstaande uitvoer blijkt dat de hashwaarde nog steeds hetzelfde is, zelfs als de naam van het bestand is gewijzigd, met de originele inhoud.

Belangrijk: md5-sommen verifieert/werkt alleen met de bestandsinhoud en niet met de bestandsnaam.

Het bestand groups_list.txt is een duplicaat van groups.csv, dus probeer tegelijkertijd als volgt de hashwaarde van de bestanden te genereren.

Je zult zien dat ze allebei gelijke hashwaarden hebben, dit komt omdat ze exact dezelfde inhoud hebben.

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

U kunt de hashwaarde(s) van een bestand(en) omleiden naar een tekstbestand en deze opslaan en delen met anderen. Voor de twee bovenstaande bestanden kunt u de onderstaande opdracht uitvoeren om de gegenereerde hash-waarden 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 de volgende opdracht uit. Je zou de naam van elk bestand moeten kunnen zien, samen met “OK”.

Voorgesteld lezen: Vind de top 15 processen op basis van geheugengebruik in Linux

De optie -c of --check vertelt het commando md5sums om MD5-sommen uit de bestanden te lezen en deze te controleren.

md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

Houd er rekening mee dat u na het maken van de controlesom de bestanden niet meer kunt hernoemen, anders krijgt u de foutmelding 'Bestand of map bestaat niet' wanneer u de bestanden met een nieuwe naam 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 directory
groups_list.txt: FAILED open or read
md5sum: groups.csv: No such file or directory
groups.csv: FAILED open or read
md5sum: WARNING: 2 listed files could not be read

Het concept werkt ook voor strings. In de onderstaande opdrachten betekent -n dat de afsluitende nieuwe regel niet wordt uitgevoerd:

echo -n "Tecmint How-Tos" | md5sum - 

afc7cb02baab440a6e64de1a5b0d0f1b  -
echo -n "Tecmint How-To" | md5sum - 

65136cb527bff5ed8615bd1959b0a248  -

In deze handleiding heb ik je laten zien hoe je hashwaarden voor bestanden kunt genereren en een controlesom kunt maken voor latere verificatie van de bestandsintegriteit in Linux. Hoewel er beveiligingskwetsbaarheden in het MD5-algoritme zijn gedetecteerd, blijven MD5-hashes nog steeds nuttig, vooral als je de partij vertrouwt die ze maakt.

Het verifiëren van bestanden is daarom een belangrijk aspect van de bestandsverwerking op uw systemen om het downloaden, opslaan of delen van beschadigde bestanden te voorkomen. Last but not least: zoals gewoonlijk kunt u ons bereiken via het onderstaande reactieformulier om hulp te zoeken. U kunt ook enkele belangrijke suggesties doen om dit bericht te verbeteren.