Ответы:
Вы можете использовать
openssl dgst -sha256 <file>
Протестировано на LibreSSL 2.6.4 на macOS 10.14 (Мохаве).
До Мохаве вы можете использовать openssl sha -sha256 <file>
или openssl sha256 <file>
.
Для проверки параметров командной строки для команды OpenSSL ша: openssl sha -help
.
OS X поставляется с командой shasum .
> which shasum
/usr/bin/shasum
Вы можете использовать:
> shasum -a 256 <file>
Больше деталей:
> shasum --help
Usage: shasum [OPTION]... [FILE]...
Print or check SHA checksums.
With no FILE, or when FILE is -, read standard input.
-a, --algorithm 1 (default), 224, 256, 384, 512, 512224, 512256
-b, --binary read in binary mode
-c, --check read SHA sums from the FILEs and check them
-t, --text read in text mode (default)
-p, --portable read in portable mode
produces same digest on Windows/Unix/Mac
-0, --01 read in BITS mode
ASCII '0' interpreted as 0-bit,
ASCII '1' interpreted as 1-bit,
all other characters ignored
The following two options are useful only when verifying checksums:
-s, --status don't output anything, status code shows success
-w, --warn warn about improperly formatted checksum lines
-h, --help display this help and exit
-v, --version output version information and exit
When verifying SHA-512/224 or SHA-512/256 checksums, indicate the
algorithm explicitly using the -a option, e.g.
shasum -a 512224 -c checksumfile
The sums are computed as described in FIPS-180-4. When checking, the
input should be a former output of this program. The default mode is to
print a line with checksum, a character indicating type (`*' for binary,
` ' for text, `?' for portable, `^' for BITS), and name for each FILE.
Report shasum bugs to mshelor@cpan.org
which shashum
ничего не выводит
/usr/bin
необязательные вещи. Я должен подтвердить, что это тот случай, позже сегодня. Обновит ответ, если он действительно пришел из установки XCL.
shasum
возвращает хеш, отличный от openssl sha -sha256 <file>
(последний является правильным хешем). Есть идеи почему?
shasum
- это скрипт на Perl, который используется Digest::SHA
для вычисления значения хеша. Для того же файла я получаю точно такой же SHA, используя один shasum
или openssl
для SHA-256
хеш-вычисления. См. Gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Чтобы уточнить @ полезный ответ Джона - который позволяет сравнивать данный хеш с его файлом в одной команде:
Введите shasum -a 256 -c <<<
,
за которым следует необязательный пробел,
затем один тик ( '
),
затем хеш для сравнения,
затем пробел
и символ режима в зависимости от того, как был создан начальный хеш:
ничего , если хеш был создан с -t
или без опции (текстовый режим, который используется по умолчанию)
звездочка ( *
), если хеш был создан с помощью -b
(двоичный режим)
вопросительный знак ( ?
), если хеш был создан с помощью -p
(переносной режим)
caret ( ^
), если хеш был создан с помощью -0
(битовый режим)
сопровождается путем к файлу,
сопровождаемым заключительной одиночной галочкой ( '
).
Как и в следующей разбивке, с разграничением скобок вокруг частей хеша и пути к файлу и квадратными скобками вокруг необязательной части «символ режима». ( Не включайте скобки или скобки в реальную жизнь - они просто здесь, чтобы детали было легко увидеть! )
shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'
Сломано :
Фактическая команда shasumshasum -a 256 -c
-a 256
говорит shasum
использовать sha256 .
-c
говорит shasum
«проверить» предоставленный ввод.
Это <<<
специальный набор символов Unix / Linux, называемый оператором перенаправления. Это для подачи чего-то в предыдущую команду. Используя его, мы говорим, что предоставим строку информации для shasum
команды, которая будет использоваться в качестве ввода.
Строка входной информации должна иметь открывающие и закрывающие одиночные галочки, такие как 'some string here'
, или в этом случае, хэш, символ режима и путь к файлу, который нужно проверить.
Часть хеша внутри строки не требует ничего особенного - но за ней должен следовать пробел.
Часть символа режима может быть ничем, звездочкой ( *
), знаком вопроса ( ?
) или кареткой ( ^
). Это говорит shasum
о режиме, с которым был создан хеш. (Примечание: по shasum
умолчанию отсутствует символ, представляющий текстовый режим .)
Часть filepath , это фактический путь к файлу, который нужно проверить.
Итак, вот реальный пример проверки конкретного загружаемого файла MAMP по его предполагаемому значению SHA-256 . Для *
работы этой проверки необходим символ режима:
shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'
Примечание: результат этой команды (для моего файла примера):
ХОРОШО:
MAMP_MAMP_PRO_5.2.pkg: ОК
или же
НЕ УДАЛОСЬ:
MAMP_MAMP_PRO_5.2.pkg: FAILED
shasum: ПРЕДУПРЕЖДЕНИЕ: 1 вычисленная контрольная сумма НЕ совпадает
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'
возвращает сообщение *sample.txt: FAILED open or read
. Без звездочки sample.txt: OK
. Я еще не смог найти основание для использования звездочки в другом месте. Не могли бы вы уточнить?
--binary
опцией)? Со страницы man: «При проверке ввод должен быть прежним выводом этой программы. Режим по умолчанию - печать строки с контрольной суммой, символом, указывающим тип ( *
для двоичного файла ,` `для текста, U
для UNIVERSAL, ^
для BITS, ?
для портативного), и имя для каждого файла. " Итак, символы между контрольной суммой и именем файла зависят от режима, установленного при создании контрольной суммы?