Ricerca nel sito web

Scopri come generare e verificare file con checksum MD5 in Linux


Un checksum è una cifra che funge da somma delle cifre corrette nei dati, che può essere utilizzata successivamente per rilevare errori nei dati durante la memorizzazione o la trasmissione. Le somme MD5 (Message Digest 5) possono essere utilizzate come checksum per verificare file o stringhe in un file system Linux.

Le somme MD5 sono stringhe di caratteri a 128 bit (numeri e lettere) risultanti dall'esecuzione dell'algoritmo MD5 su un file specifico. L'algoritmo MD5 è una popolare funzione hash che genera un digest di messaggi a 128 bit denominato valore hash e quando ne generi uno per un particolare file, rimane esattamente invariato su qualsiasi macchina, indipendentemente dal numero di volte in cui viene generato.

Normalmente è molto difficile trovare due file distinti che restituiscono le stesse stringhe. Pertanto, puoi utilizzare md5sum per verificare l'integrità dei dati digitali determinando che un file o un ISO scaricato è una copia bit per bit del file o dell'ISO remoto.

Lettura consigliata: Progresso: monitora l'avanzamento per i comandi (cp, mv, dd, tar, ecc.) in Linux

In Linux, il programma md5sum calcola e controlla i valori hash MD5 di un file. È un componente del pacchetto GNU Core Utilities, quindi è preinstallato sulla maggior parte, se non su tutte, le distribuzioni Linux.

Dai un'occhiata al contenuto di /etc/group salvato come groups.cvs di seguito.

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

Il comando md5sums riportato di seguito genererà un valore hash per il file come segue:

md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

Quando tenti di modificare il contenuto del file rimuovendo la prima riga, root:x:0: e quindi esegui il comando per la seconda volta, prova a osservare il valore hash:

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

Noterai che il valore hash ora è cambiato, indicando che il contenuto del file è stato modificato.

Ora, ripristina la prima riga del file, root:x:0: e rinominalo in group_file.txt ed esegui il comando seguente per generare nuovamente il suo valore hash:

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

Dall'output sopra, il valore hash è sempre lo stesso anche quando il file è stato rinominato, con il suo contenuto originale.

Importante: md5 sums verifica/funziona solo con il contenuto del file anziché con il nome del file.

Il file groups_list.txt è un duplicato di groups.csv, quindi prova a generare il valore hash dei file contemporaneamente come segue.

Vedrai che entrambi hanno valori di hash uguali, questo perché hanno esattamente lo stesso contenuto.

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

È possibile reindirizzare i valori hash di uno o più file in un file di testo e archiviarli e condividerli con altri. Per i due file sopra, puoi eseguire il comando seguente per reindirizzare i valori hash generati in un file di testo per un uso successivo:

md5sum groups_list.txt  groups.csv > myfiles.md5

Per verificare che i file non siano stati modificati da quando hai creato il checksum, esegui il comando successivo. Dovresti essere in grado di visualizzare il nome di ciascun file insieme a "OK ".

Lettura consigliata: trova i 15 principali processi in base all'utilizzo della memoria in Linux

L'opzione -c o --check dice al comando md5sums di leggere le somme MD5 dai file e di controllarle.

md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

Ricorda che dopo aver creato il checksum, non puoi rinominare i file altrimenti riceverai un errore "No such file or directory ", quando provi a verificare i file con nuovi nomi.

Ad esempio:

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

Il concetto funziona allo stesso modo anche per le stringhe, nei comandi seguenti, -n significa non visualizzare il carattere di fine riga finale:

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

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

65136cb527bff5ed8615bd1959b0a248  -

In questa guida ti ho mostrato come generare valori hash per i file e creare un checksum per la successiva verifica dell'integrità dei file in Linux. Sebbene siano state rilevate vulnerabilità di sicurezza nell'algoritmo MD5, gli hash MD5 rimangono comunque utili soprattutto se ti fidi della parte che li crea.

La verifica dei file è quindi un aspetto importante della gestione dei file sui tuoi sistemi per evitare di scaricare, archiviare o condividere file danneggiati. Ultimo ma non meno importante, come al solito raggiungici tramite il modulo dei commenti qui sotto per chiedere assistenza, puoi anche dare alcuni suggerimenti importanti per migliorare questo post.