Suma kontrolna to cyfra, która służy jako suma prawidłowych cyfr w danych, która może być później użyta do wykrycia błędów w danych podczas przechowywania lub przesyłania. Sumy MD5 (Message Digest 5) mogą być używane jako sumy kontrolne do weryfikacji plików lub ciągów znaków w systemie plików Linux.
Suma MD5 to 128-bitowy ciąg znaków (cyfr i liter) powstały w wyniku działania algorytmu MD5 na określony plik. Algorytm MD5 jest popularną funkcją haszującą, która generuje 128-bitowy skrót wiadomości zwany wartością haszującą, a kiedy wygenerujesz go dla konkretnego pliku, jest on dokładnie niezmienny na każdej maszynie bez względu na to, ile razy zostanie wygenerowany.
Zazwyczaj bardzo trudno jest znaleźć dwa różne pliki, których wynikiem są takie same ciągi znaków. Dlatego można użyć md5sum do sprawdzenia cyfrowej integralności danych poprzez określenie, czy pobrany plik lub ISO jest bitową kopią zdalnego pliku lub ISO.
Sugerowane przeczytanie: Progress – Monitorowanie postępu dla poleceń (cp, mv, dd, tar, itp.) w Linuksie
W Linuksie program md5sum oblicza i sprawdza wartości skrótu MD5 pliku. Jest on składnikiem pakietu GNU Core Utilities, dlatego jest preinstalowany w większości, jeśli nie we wszystkich dystrybucjach Linuksa.
Przyjrzyj się zawartości pliku /etc/group
zapisanego jako groups.cvs poniżej.
Poniższe polecenie md5sums wygeneruje wartość skrótu dla pliku w następujący sposób:
$ md5sum groups.csvbc527343c7ffc103111f3a694b004e2f groups.csv
Przy próbie zmiany zawartości pliku poprzez usunięcie pierwszej linii, root:x:0:
a następnie uruchomieniu polecenia po raz drugi, spróbuj zaobserwować wartość hash:
$ md5sum groups.csv46798b5cfca45c46a84b7419f8b74735 groups.csv
Zauważysz, że wartość hash uległa teraz zmianie, co wskazuje, że zawartość pliku została zmieniona.
Teraz umieść z powrotem pierwszą linię pliku, root:x:0:
i zmień jego nazwę na group_file.txt i uruchom poniższe polecenie, aby wygenerować jego wartość hash ponownie:
$ md5sum groups_list.txtbc527343c7ffc103111f3a694b004e2f groups_list.txt
Z powyższego wyjścia wynika, że wartość hash jest wciąż taka sama, nawet gdy plik został przemianowany, z jego oryginalną zawartością.
Ważne: sumy md5 weryfikują/działają tylko z zawartością pliku, a nie z jego nazwą.
Plik groups_list.txt jest duplikatem pliku groups.csv, więc spróbuj wygenerować wartość hash dla tych plików w tym samym czasie w następujący sposób.
Zobaczysz, że oba mają równe wartości hash, to dlatego, że mają dokładnie taką samą zawartość.
$ md5sum groups_list.txt groups.csv bc527343c7ffc103111f3a694b004e2f groups_list.txtbc527343c7ffc103111f3a694b004e2f groups.csv
Możesz przekierować wartość hash(s) pliku(ów) do pliku tekstowego i przechowywać, dzielić się nimi z innymi. Dla dwóch powyższych plików, możesz wydać poniższe polecenie, aby przekierować wygenerowane wartości hash do pliku tekstowego do późniejszego użycia:
$ md5sum groups_list.txt groups.csv > myfiles.md5
Aby sprawdzić, czy pliki nie zostały zmodyfikowane od czasu utworzenia sumy kontrolnej, wykonaj następne polecenie. Powinieneś być w stanie wyświetlić nazwę każdego pliku wraz z napisem „OK”.
Sugerowana lektura: Find Top 15 Processes by Memory Usage in Linux
Opcja -c
lub --check
mówi poleceniu md5sums, aby odczytało sumy MD5 z plików i sprawdziło je.
$ md5sum -c myfiles.md5groups_list.txt: OKgroups.csv: OK
Pamiętaj, że po utworzeniu sumy kontrolnej nie możesz zmienić nazwy plików, w przeciwnym razie otrzymasz błąd „Brak takiego pliku lub katalogu”, gdy spróbujesz zweryfikować pliki z nowymi nazwami.
Na przykład:
$ 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
Pomysł działa również dla łańcuchów znaków, w poniższych komendach, -n
oznacza nie wypisywanie końcowej nowej linii:
$ echo -n "Tecmint How-Tos" | md5sum - afc7cb02baab440a6e64de1a5b0d0f1b -
$ echo -n "Tecmint How-To" | md5sum - 65136cb527bff5ed8615bd1959b0a248 -
W tym poradniku pokazałem jak generować wartości hash dla plików, tworzyć sumy kontrolne do późniejszej weryfikacji integralności plików w Linuksie. Pomimo wykrycia luk bezpieczeństwa w algorytmie MD5, hashe MD5 nadal pozostają użyteczne, szczególnie jeśli ufasz stronie, która je tworzy.