Контрольная сумма (хеш) – фиксированная строка, вычисленная по содержимому файла. Совпал хеш с эталоном – байты те же; не совпал – файл другой, битый или подменён. В Linux для этого есть cksum, md5sum, sha1sum, sha256sum и родственные утилиты из coreutils.
cksum
cksum считает CRC (исторически POSIX CRC) и печатает ещё размер файла. Удобно для быстрой проверки «не поехало ли», не для криптостойкой защиты от подмены.
cksum example.txt
Пример вывода:
1258926179 1024 example.txt
1258926179– контрольная сумма;1024– размер в байтах;example.txt– имя файла.
md5sum
MD5 даёт 128-битный хеш в hex. Для проверки целостности после копирования ещё встречается, но для подписи «файл точно от автора» MD5 давно не подходит: известны практические коллизии. Если сайт отдаёт только MD5, лучше искать SHA-256 рядом.
md5sum example.txt
Пример (хеш пустого файла):
d41d8cd98f00b204e9800998ecf8427e example.txt
sha1sum
SHA-1 – 160 бит. Надёжнее MD5 для случайных повреждений, но тоже считается криптографически слабым (коллизии). В новых схемах предпочтительнее семейство SHA-2.
sha1sum example.txt
Пример:
da39a3ee5e6b4b0d3255bfef95601890afd80709 example.txt
sha256sum
SHA-256 – рабочий стандарт для ISO, deb, образов контейнеров и «проверьте скачанное». 256-битный дайджест; коллизии на практике для подмены файлов не эксплуатируются так, как у MD5/SHA-1.
sha256sum example.txt
Пример (снова пустой файл):
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 example.txt
Есть и sha512sum, b2sum (BLAKE2) – смысл тот же, другой алгоритм.
Зачем считать хеши
- Целостность – скачали ISO, сверили с опубликованным SHA-256;
- Копии и бэкапы – два файла с одним хешем с высокой вероятностью идентичны по содержимому;
- Обнаружение подмены – при условии, что эталонный хеш получен по доверенному каналу (HTTPS сайта дистрибутива, GPG-подпись и т.п.).
Сам по себе хеш не доказывает авторство: злоумышленник может отдать и поддельный файл, и поддельный хеш. Нужен доверенный источник эталона.
Проверка по файлу сумм: ключ -c
У md5sum / sha*sum опция -c сверяет файлы со списком вида хеш имя:
sha256sum example.txt archive.tar.gz > checksums.txt sha256sum -c checksums.txt
Успех:
example.txt: OK archive.tar.gz: OK
Если байты изменились, будет FAILED и ненулевой код выхода – удобно в скриптах и CI.
Несколько файлов сразу
sha256sum *.txt sha256sum file1.bin file2.bin find . -type f -name '*.iso' -print0 | xargs -0 sha256sum
Вывод можно сразу перенаправить в .sha256 и раздавать вместе с архивом.
Что выбрать
- быстро «не битый ли файл» внутри доверенной среды – хватит и CRC/
cksumили MD5; - публичные загрузки, дистрибутивы, образы – SHA-256 (или SHA-512), плюс по возможности подпись GPG;
- не полагаться на MD5/SHA-1 как на защиту от злонамеренной подмены.
Итого: для повседневной проверки скачанного в Linux чаще всего достаточно sha256sum файл и сверки с эталоном; для пачки файлов – сохранить список и прогнать sha256sum -c.
