Потрібен кліп, щоб перевірити хеш файлу sha256


127

Щоб перевірити sha1 файлу, який я б використав, openssl sha1 <file>я не знаю, що використовувати для перевірки хеша файлу sha256, проте що б ти порадив?

Відповіді:


156

Можна використовувати

openssl dgst -sha256 <file>

Тестовано на LibreSSL 2.6.4 на macOS 10.14 (Mojave).


До Mojave ви можете використовувати openssl sha -sha256 <file>або openssl sha256 <file>.

Для перевірки параметрів командного рядка для команди OpenSSL ша: openssl sha -help.


Це також портативний та працює на ubuntu.
Крістіан Бонгіорно

86

OS X постачається командою шасума .

> 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

Хм, я, здається, не маю його на OSX 10.11.3. which shashumвиходить нічого
erikvold

3
@erikvold Ви знаєте, що? Б'юсь об заклад, що я отримав інструменти командного рядка Xcode. Арг. Я дуже хочу, щоб Apple не забруднювала /usr/binнеобов'язкові речі. Мені доведеться переконатися, що це справа пізніше сьогодні. Оновить відповідь, якщо вона дійсно прийшла від встановлення XCL.
Ян C.

2
shasumповертає інший хеш, ніж openssl sha -sha256 <file>(останній - правильний хеш). Будь-яка ідея чому?
ws6079

@ ws6079 shasum- це сценарій perl, який використовує Digest::SHAдля обчислення хеш-значення. Для того ж файлу я отримую один і той же алгоритм SHA , використовуючи або shasumабо opensslдля SHA-256хеш - обчислень. Дивіться: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.

Шахсум сьогодні працює для мене чудово.
nycynik

7

Ці shasumкоманди поставляються з OSX на деякий час тепер. Це дасть той же результат , як openssl sha -sha256при використанні з shasumдопомогою -a 256опції.


6

Щоб уточнити корисну відповідь @ John - яка дозволяє порівнювати заданий хеш із його файлом в одній команді:

Введіть shasum -a 256 -c <<<,
а потім - необов'язковий пробіл,
а потім - один галочок ( '),
за ним - хеш для порівняння,
а потім пробіл,
а потім символ режиму на основі того, як генерувався початковий хеш:

  • нічого , якщо хеш був створений з -tопцією чи ні (текстовий режим, який є типовим)

  • зірочка ( *), якщо хеш створено за допомогою -b(двійковий режим)

  • знак питання ( ?), якщо хеш створено за допомогою -p(портативний режим)

  • caret ( ^), якщо хеш створений за допомогою -0(біт режим)

Далі йде шлях до файлу,
після чого закривається одна галочка ( ').

Як і наступна розбивка з розмежуванням паренів навколо частин хеш-файлів і квадратних дужок навколо необов'язкової частини "характер символу". ( Не включайте парен або кронштейни в реальному житті - вони просто тут, щоб деталі були легко видно! )

shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'

Зламано :

Фактична команда шасумаshasum -a 256 -c

  • -a 256говорить shasumвикористовувати sha256 .

  • -cкаже shasum"перевірити" наданий вхід.

Це <<<спеціальний набір символів Unix / Linux, який називається оператором "перенаправлення". Це для подачі чогось у попередню команду. Використовуючи його, ми говоримо, що ми будемо надавати рядок інформації для shasumкоманди, яка використовуватиметься як вхід.

Рядок вхідної інформації повинен мати відкриття та закриття одиночних галочок, таких як 'some string here', або в цьому випадку, хеш, символ режиму та шлях файлу, який потрібно перевірити.

  • Хеш частина всередині рядка нічого особливого не потрібно - але це повинно супроводжуватися прогалиною.

  • Символьний режим частина не може бути нічим іншим, зірочка ( *), знак питання ( ?), або каретка ( ^). Це повідомляє shasumпро режим, у якому генерувався хеш. (Примітка: жоден символ, що представляє текстовий режим, не є shasumза замовчуванням.)

  • Шлях_до_файлу частина, це реальний шлях до файлу , який необхідно перевірити.


Отже, ось приклад із реального життя, який перевіряє певний файл завантаження 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:
НЕПРАВНИЙ шамсум: ПОПЕРЕДЖЕННЯ: 1 обчислена контрольна сума НЕ відповідає


Для мене це працює без зірочки перед назвою файлу (як і з зірочкою).
Пітер Ш

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'повертає повідомлення *sample.txt: FAILED open or read. Без зірочки , sample.txt: OK. Я ще не змогла знайти основи використання зірочки в іншому місці. Не могли б ви уточнити?
SoFarther

Чи свідчить наявність зірочки про те, що контрольна сума, яка використовується як вхід у прикладі, створювалася у двійковому режимі (з --binaryопцією)? На сторінці чоловіка: "Під час перевірки вхід повинен бути колишнім результатом цієї програми. Режим за замовчуванням - це друк рядка з контрольною сумою, символом, що вказує на тип ( *для двійкового,` `для тексту, Uдля UNIVERSAL, ^для BITS, ?для портативного) та ім'я кожного ФАЙЛУ. " Отже, символи між контрольною сумою та назвою файлу залежать від режиму, встановленого при створенні контрольної суми?
SoFarther

@SoFarther: так, ти маєш рацію. Після деяких експериментів, щоб довести цю ідею, я оновив свій пост, щоб уточнити аспект "режиму".
leanne

6

Я використовував би цю команду.

shasum -a 256 -c <<<'_paste hash to compare here_ *_path to file goes here_'

Приклад:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.