Risposte:
Puoi usare
openssl dgst -sha256 <file>
Testato su LibreSSL 2.6.4 su macOS 10.14 (Mojave).
Prima di Mojave puoi usare openssl sha -sha256 <file>
o openssl sha256 <file>
.
Per verificare le opzioni della riga di comando per il comando sha openssl: openssl sha -help
.
OS X viene fornito con un comando shasum .
> which shasum
/usr/bin/shasum
Puoi usare:
> shasum -a 256 <file>
Più dettagli:
> 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
non produce nulla
/usr/bin
con roba opzionale. Dovrò verificare questo è il caso più tardi oggi. Aggiornerà la risposta se effettivamente proviene dall'installazione XCL.
shasum
restituisce un hash diverso da openssl sha -sha256 <file>
(con quest'ultimo è l'hash corretto). Qualche idea sul perché?
shasum
è uno script perl, utilizzato Digest::SHA
per calcolare il valore hash. Per lo stesso file ottengo lo stesso SHA esatto usando uno shasum
o openssl
per un SHA-256
calcolo hash. Vedi: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Per chiarire la risposta utile di @ John, che consente di confrontare un determinato hash con il suo file in un solo comando:
Inserisci shasum -a 256 -c <<<
,
seguito da uno spazio facoltativo,
seguito da un singolo segno di spunta ( '
),
seguito dall'hash per confrontare,
seguito da uno spazio,
seguito da un carattere di modalità, basato sulla modalità di generazione dell'hash iniziale:
nulla , se l'hash è stato creato con -t
o nessuna opzione (modalità testo, che è l'impostazione predefinita)
asterisco ( *
), se l'hash è stato creato con -b
(modalità binaria)
punto interrogativo ( ?
), se l'hash è stato creato con -p
(modalità portatile)
caret ( ^
), se l'hash è stato creato con -0
(modalità bit)
seguito dal percorso del file,
seguito da un singolo segno di spunta di chiusura ( '
).
Come la seguente suddivisione, con delineare parentesi attorno alle parti hash e percorso file e parentesi quadre attorno alla parte opzionale "carattere modalità". ( Non includere le parentesi o le parentesi nella vita reale: sono solo qui per rendere le parti facili da vedere! )
shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'
Suddiviso :
Il vero comando shasum èshasum -a 256 -c
-a 256
dice shasum
di usare sha256 .
-c
dice shasum
di "controllare" l'ingresso fornito.
Il <<<
è un set di caratteri speciale Unix / Linux, chiamato un operatore di "reindirizzamento". Serve per alimentare qualcosa in un comando precedente. Usandolo, stiamo dicendo che forniremo una stringa di informazioni che il shasum
comando può usare come input.
La stringa di informazioni di input deve avere l'apertura e la chiusura di singoli tick, come 'some string here'
, o in questo caso, l'hash, il carattere mode e il percorso del file da controllare.
La parte hash all'interno della stringa non ha bisogno di nulla di speciale, ma deve essere seguita da uno spazio.
La parte del carattere in modalità può essere nulla, un asterisco ( *
), un punto interrogativo ( ?
) o un punto di inserimento ( ^
). Questo dice shasum
la modalità con cui è stato generato l'hash. (Nota: nessun carattere, che rappresenta la modalità testo, è shasum
predefinito).
Il filepath parte, è il percorso effettivo del file da controllare.
Quindi, ecco un esempio reale che controlla un determinato file di download MAMP rispetto al presunto valore SHA-256 . Il *
carattere in modalità era necessario per far funzionare questo controllo:
shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'
Nota: il risultato di questo comando (per il mio file di esempio) è -
OK:
MAMP_MAMP_PRO_5.2.pkg: OK
o
FALLITA:
MAMP_MAMP_PRO_5.2.pkg: shasum FAILED
: ATTENZIONE: 1 checksum calcolato NON corrisponde
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'
restituisce il messaggio *sample.txt: FAILED open or read
. Senza l'asterisco, sample.txt: OK
. Non sono ancora riuscito a trovare la base dell'uso dell'asterisco altrove. Potresti chiarire?
--binary
opzione)? Dalla pagina man: "Durante il controllo, l'input dovrebbe essere un precedente output di questo programma. La modalità predefinita è stampare una riga con checksum, un carattere che indica il tipo ( *
per binario,` `per il testo, U
per UNIVERSAL, ^
per BITS, ?
per portatile) e nome per ciascun FILE. " Quindi, i caratteri tra il checksum e il nome del file dipendono dalla modalità impostata al momento della creazione del checksum?