Sha1sum

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:39, 25 мая 2019.

sha1sum - это компьютерная программа, которая вычисляет и проверяет значения хэш-сумм (контрольных сумм). Обычно используется для проверки целостности файлов. Он (как вариант) устанавливается по умолчанию в большинстве Unix-подобных операционных систем. Также программа сверяет вычисленные значения со значениями, сохраненными в файле (это удобно для массовой проверки целостности файлов).

Наиболее часто программа используется для проверки правильной загрузки файлов по сети.

Программа включена в основные утилиты GNU, BusyBox и Toybox.

Ключи запуска программы

sha1sum [ключи] [файл]...

В случаях, когда файл не указан, либо в качестве его имени указан символ -, то данные читаются из standard input.

Ключи:

-t, --text — читать данные файлов в текстовом режиме (по умолчанию). Перед именем файла выводится пробел.

-b, --binary — читать данные файлов в двоичном режиме. Перед именем файла выводится символ *.

-c, --check — сверять вычисленные значения SHA-1 со значениями из файла.

--status — (только при проверке хешей) — выводить только код проверки.

-w, --warn — (только при проверке хешей) — предупреждать о строках (checksum lines) с неправильным форматом.

--help — вывести только справку по ключам.

--version — вывести только информацию о версии.

Примеры

Хеши (checksums) SHA-1 (160-битные значения) выводятся в виде последовательностей из 40 шестнадцатеричных чисел.

$ sha1sum ./s*
41a12ce5ed24fcc802e74c2377f9791dc8d3e2e7  ./sec1.png
00e01ccb943f8ea2e5f588dc1351ea998cbdc5c5  ./sec2.png

Для вычисления и записи (в файл sums.sha1) хешей файлов (читаемых как двоичные файлы) с шаблоном имени:

sha1sum -b ./sec* > sums.sha1

Чтобы создать файл с хэш-суммой sha1, если он не предоставлен:

$ sha1sum filename [filename2] ...> SHA1SUM

При распространении одного файла к имени файла может быть добавлен «.sha1». Например:

$ sha1sum my-zip.tar.gz> my-zip.tar.gz.sha1

Вывод содержит одну строку для каждого файла в форме "{hash} SPACE ASTERISK [{directory} SLASH] {filename}". Например:

$ sha1sum -b my-zip.tar.gz

d5db29cd03a2ed055086cef9c31c252b4587d6d0 * my-zip.tar.gz

$ sha1sum -b subdir / filename2

55086cef9c87d6d031cd5db29cd03a2ed0252b45 * subdir / filename2

Для проверки контрольных сумм файлов, сохраненных в файле.

sha1sum -c sums.sha1

./sec1.png: НЕУСПЕШНО

./sec2.png: Успех

sha1sum: ПРЕДУПРЕЖДЕНИЕ: НЕ совпали 1 вычисленные контрольные суммы из 2

Для каждого файла выводится результат проверки: Успех или НЕУСПЕШНО. Список проверяемых файлов читается из указанного файла.

Когда нужно проверить, все ли файлы имеют правильные контрольные суммы, можно подавить «вывод результата для каждого файла» с помощью ключа --status. Тогда ничего не выводится, а возвращается невидимый «код возврата». Это полезно, когда программа вызывается другой программой.


Деревья хеш-файлов

sha1sum может создавать контрольные суммы только одного или нескольких файлов внутри каталога, но не из дерева каталогов, то есть подкаталогов, подкаталогов и т. д. и файлов, которые они содержат. Это возможно при использовании sha1sum в сочетании с командами find и xargs (и необязательно с sort, чтобы файлы сортировались в файле контрольной суммы). sha1deep может создавать контрольные суммы дерева каталогов.

Вы также можете использовать sha1sum с exec:

$ find s_* -type f -exec sha1sum {} \;

65c23f142ff6bcfdddeccebc0e5e63c41c9c1721 s_1/file_s11

d3d59905cf5fc930cd4bf5b709d5ffdbaa9443b2 s_2/file_s21

5590e00ea904568199b86aee4b770fb1b5645ab8 s_a/file_02

51e612c2f909769a5b652417084e94a3a9d6c658 s_a/file_01

Примечания

  1. Bruce Schneier. "Cryptanalysis of SHA-1". Schneier on Security.
  1. https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html
  1. https://www.gnu.org/software/coreutils/manual/html_node/sha1sum-invocation.html
  1. https://github.com/mirror/busybox/blob/a6f8651/testsuite/sha1sum.tests
  1. https://github.com/landley/toybox/blob/409a8e093a4ea8e0892ab302b4fd433d08f435eb/toys/lsb/md5sum.c#L17

Ссылки