Чтобы проверить sha1 файла, который я бы использовал, openssl sha1 <file>
я не уверен, что использовать для проверки хэша файла sha256, однако, что бы вы порекомендовали?
macos
command-line
encryption
erikvold
источник
источник
OS X поставляется с командой shasum .
Вы можете использовать:
Больше деталей:
источник
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
shasum -a 256 -c
-a 256
говоритshasum
использовать sha256 .-c
говоритshasum
«проверить» предоставленный ввод.Это
<<<
специальный набор символов Unix / Linux, называемый оператором перенаправления. Это для подачи чего-то в предыдущую команду. Используя его, мы говорим, что предоставим строку информации дляshasum
команды, которая будет использоваться в качестве ввода.Строка входной информации должна иметь открывающие и закрывающие одиночные галочки, такие как
'some string here'
, или в этом случае, хэш, символ режима и путь к файлу, который нужно проверить.Часть хеша внутри строки не требует ничего особенного - но за ней должен следовать пробел.
Часть символа режима может быть ничем, звездочкой (
*
), знаком вопроса (?
) или кареткой (^
). Это говоритshasum
о режиме, с которым был создан хеш. (Примечание: поshasum
умолчанию отсутствует символ, представляющий текстовый режим .)Часть filepath , это фактический путь к файлу, который нужно проверить.
Итак, вот реальный пример проверки конкретного загружаемого файла MAMP по его предполагаемому значению SHA-256 . Для
*
работы этой проверки необходим символ режима:Примечание: результат этой команды (для моего файла примера):
ХОРОШО:
или же
НЕ УДАЛОСЬ:
источник
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'
возвращает сообщение*sample.txt: FAILED open or read
. Без звездочкиsample.txt: OK
. Я еще не смог найти основание для использования звездочки в другом месте. Не могли бы вы уточнить?--binary
опцией)? Со страницы man: «При проверке ввод должен быть прежним выводом этой программы. Режим по умолчанию - печать строки с контрольной суммой, символом, указывающим тип (*
для двоичного файла ,` `для текста,U
для UNIVERSAL,^
для BITS,?
для портативного), и имя для каждого файла. " Итак, символы между контрольной суммой и именем файла зависят от режима, установленного при создании контрольной суммы?Я бы использовал эту команду.
Пример:
источник