Potrzebujesz cli, aby sprawdzić skrót pliku SHA256

127

Aby sprawdzić sha1 pliku, którego bym użył, openssl sha1 <file>nie jestem pewien, czego użyć do sprawdzenia skrótu sha256 pliku, ale co byś polecił?

erikvold
źródło

Odpowiedzi:

156

Możesz użyć

openssl dgst -sha256 <file>

Testowane na LibreSSL 2.6.4 na macOS 10.14 (Mojave).


Przed Mojave możesz użyć openssl sha -sha256 <file>lub openssl sha256 <file>.

Aby sprawdzić opcje wiersza poleceń za pomocą polecenia openssl sha: openssl sha -help.

janm
źródło
Jest to również przenośne i działa na Ubuntu.
Christian Bongiorno,
86

System OS X jest dostarczany z poleceniem shasum .

> which shasum
/usr/bin/shasum

Możesz użyć:

> shasum -a 256 <file>

Więcej szczegółów:

> 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
Ian C.
źródło
Hmm Nie wydaje mi się, żeby miał to na OSX 10.11.3. which shashumnic nie wyświetla
erikvold
3
@erikvold Wiesz co? Założę się, że dostałem z narzędziami Xcode Command Line. Argh. Naprawdę chciałbym, żeby Apple nie zanieczyszczał /usr/binopcjonalnymi rzeczami. Będę musiał sprawdzić, czy dzisiaj tak jest. Zaktualizuje odpowiedź, jeśli rzeczywiście pochodzi z instalacji XCL.
Ian C.
2
shasumzwraca inny hash niż openssl sha -sha256 <file>(przy czym ten ostatni jest poprawnym hash). Masz pomysł, dlaczego?
ws6079
@ ws6079 shasumto skrypt perla, używany Digest::SHAdo obliczania wartości skrótu. Dla tego samego pliku otrzymuję dokładnie ten sam SHA przy użyciu albo shasumalbo openssldo SHA-256obliczenia skrótu. Zobacz: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.
shahsum działa dzisiaj dla mnie świetnie.
nycynik
7

Te shasumstatki dowodzenia z OSX na chwilę teraz. Daje taki sam efekt, jak w openssl sha -sha256przypadku shasumkorzystania z -a 256opcji.

karl
źródło
6

Aby wyjaśnić użyteczną odpowiedź @ John - która pozwala porównać dany skrót z jego plikiem w jednym poleceniu:

Enter shasum -a 256 -c <<<,
następnie opcjonalną spację,
następnie pojedynczy tik ( '),
następnie skrót do porównania,
następnie spację
i znak trybu, w oparciu o sposób wygenerowania początkowego skrótu:

  • nic , jeśli skrót został utworzony z -topcją lub bez (tryb tekstowy, który jest domyślny)

  • gwiazdka ( *), jeśli skrót został utworzony za pomocą -b(tryb binarny)

  • znak zapytania ( ?), jeśli skrót został utworzony za pomocą -p(tryb przenośny)

  • caret ( ^), jeśli skrót został utworzony za pomocą -0(tryb bitów)

następnie ścieżka do pliku,
a następnie zamykający pojedynczy tik ( ').

Podobnie jak w poniższym podziale, z wytyczaniem parenów wokół części skrótu i ​​ścieżki plików oraz nawiasów kwadratowych wokół opcjonalnej części „postaci trybu”. ( Nie uwzględniaj parens ani nawiasów w prawdziwym życiu - są tutaj tylko po to, aby części były dobrze widoczne! )

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

W podziale :

Rzeczywiste polecenie shasum toshasum -a 256 -c

  • -a 256mówi, shasumaby użyć sha256 .

  • -ckaże shasum„sprawdzić” podane dane wejściowe.

Jest <<<to zestaw znaków specjalnych Unix / Linux, zwany operatorem „przekierowania”. Służy do karmienia czegoś wcześniejszym poleceniem. Korzystając z niego, mówimy, że podamy ciąg informacji, których shasumkomenda ma użyć jako danych wejściowych.

Ciąg informacji wejściowych musi zawierać otwierające i zamykające pojedyncze tiki, takie jak 'some string here', lub w tym przypadku, hash, znak trybu i ścieżka pliku do sprawdzenia.

  • Część hash wewnątrz łańcucha nie potrzebuje niczego specjalnego - ale po niej musi być spacja.

  • Część znaku trybu może być niczym, gwiazdką ( *), znakiem zapytania ( ?) lub karetką ( ^). Mówi shasumto o trybie, w którym wygenerowano skrót. (Uwaga: shasumdomyślnie nie ma znaku reprezentującego tryb tekstowy ).

  • Filepath część, jest rzeczywista ścieżka do pliku, który ma zostać sprawdzony.


Oto prawdziwy przykład sprawdzający konkretny plik do pobrania MAMP z jego rzekomą wartością SHA-256 . *Charakter tryb był wymagany dla tej kontroli do pracy:

shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'

Uwaga: wynikiem tego polecenia (dla mojego przykładowego pliku) jest albo -

DOBRZE:

MAMP_MAMP_PRO_5.2.pkg: OK

lub

AWARIA:

MAMP_MAMP_PRO_5.2.pkg:
AWARIA shasum: OSTRZEŻENIE: 1 obliczona suma kontrolna NIE pasuje

leanne
źródło
Dla mnie działa to bez gwiazdki przed nazwą pliku (jak również z gwiazdką).
Peter W
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'zwraca wiadomość *sample.txt: FAILED open or read. Bez gwiazdką sample.txt: OK. Nie byłem jeszcze w stanie znaleźć podstawy użycia gwiazdki w innym miejscu. Czy możesz to wyjaśnić?
SoFarther
Czy obecność gwiazdki wskazuje, że suma kontrolna użyta jako dane wejściowe w przykładzie została wygenerowana w trybie binarnym (z --binaryopcją)? Ze strony podręcznika: „Podczas sprawdzania, wejście powinno być wcześniejszym wyjściem tego programu. Domyślnym trybem jest wydrukowanie wiersza z sumą kontrolną, znakiem wskazującym typ ( *dla binarnego,` `dla tekstu, Udla UNIWERSALNEGO, ^dla BITÓW, ?dla urządzeń przenośnych) i nazwę dla każdego PLIKU ”. Więc znaki między sumą kontrolną a nazwą pliku zależą od trybu ustawionego podczas tworzenia sumy kontrolnej?
SoFarther
@ SoFarther: tak, masz rację. Po kilku eksperymentach w celu udowodnienia tego pomysłu zaktualizowałem swój post, aby wyjaśnić aspekt „trybu”.
leanne
6

Użyłbym tego polecenia.

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

Przykład:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
Jan
źródło