Ответы:
Вы можете использовать
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, ?для портативного), и имя для каждого файла. " Итак, символы между контрольной суммой и именем файла зависят от режима, установленного при создании контрольной суммы?