Antworten:
Sie können verwenden
openssl dgst -sha256 <file>
Getestet unter LibreSSL 2.6.4 unter macOS 10.14 (Mojave).
Vor Mojave können Sie openssl sha -sha256 <file>
oder verwenden openssl sha256 <file>
.
Um zu überprüfen , Befehlszeilenoptionen für den openssl sha Befehl: openssl sha -help
.
OS X wird mit einem Shasum-Befehl ausgeliefert .
> which shasum
/usr/bin/shasum
Sie können verwenden:
> shasum -a 256 <file>
Mehr Details:
> 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
gibt nichts aus
/usr/bin
mit optionalen Dingen verschmutzen . Ich werde das später heute noch überprüfen müssen. Aktualisiert die Antwort, wenn sie tatsächlich von der XCL-Installation stammt.
shasum
gibt einen anderen Hash zurück als openssl sha -sha256 <file>
(wobei letzterer der richtige Hash ist). Irgendeine Idee warum?
shasum
ist ein Perl-Skript, mit Digest::SHA
dem der Hash-Wert berechnet wird. Für dieselbe Datei erhalte ich genau dieselbe SHA, indem ich entweder shasum
oder openssl
für eine SHA-256
Hash-Berechnung verwende. Siehe: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Zur Verdeutlichung der nützlichen Antwort von @ John, mit der Sie einen bestimmten Hash mit seiner Datei in einem Befehl vergleichen können:
Geben Sie ein shasum -a 256 -c <<<
,
gefolgt von einem optionalen Leerzeichen,
gefolgt von einem einzelnen Häkchen ( '
),
gefolgt von dem zu vergleichenden Hash,
gefolgt von einem Leerzeichen,
gefolgt von einem Moduszeichen, basierend darauf, wie der anfängliche Hash generiert wurde:
nichts , wenn der Hash mit -t
oder ohne Option erstellt wurde (Textmodus, der die Standardeinstellung ist)
Sternchen ( *
), wenn der Hash mit -b
(Binärmodus) erstellt wurde
Fragezeichen ( ?
), wenn der Hash mit -p
(portabler Modus) erstellt wurde
caret ( ^
), wenn der Hash mit -0
(bits mode) erstellt wurde
gefolgt vom Pfad zur Datei,
gefolgt von einem abschließenden einzelnen Häkchen ( '
).
Wie in der folgenden Aufteilung, mit Begrenzung der Parens um die Hash- und Dateipfadteile und eckigen Klammern um den optionalen "Moduszeichen" -Teil. ( Fügen Sie im wirklichen Leben keine Parens oder Klammern hinzu - sie sind nur dazu da, die Teile einfach zu sehen! )
shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'
Aufgeschlüsselt :
Der eigentliche Shasum- Befehl lautetshasum -a 256 -c
-a 256
sagt sha256shasum
zu benutzen .
-c
fordert Sie shasum
auf, die bereitgestellten Eingaben zu "überprüfen".
Dies <<<
ist ein Unix / Linux-Sonderzeichensatz, der als "Umleitungs" -Operator bezeichnet wird. Es ist dafür gedacht, etwas in einen vorherigen Befehl einzuspeisen. Wenn Sie es verwenden, geben Sie eine Reihe von Informationen an, die der shasum
Befehl als Eingabe verwenden soll.
Die Zeichenfolge der Eingabeinformationen muss einzelne öffnende und schließende Häkchen enthalten, z. B. 'some string here'
in diesem Fall den Hash, das Moduszeichen und den zu überprüfenden Dateipfad.
Der Hash- Teil in der Zeichenkette benötigt nichts Besonderes - es muss jedoch ein Leerzeichen folgen.
Der Moduszeichenteil kann nichts, ein Sternchen ( *
), ein Fragezeichen ( ?
) oder ein Caret ( ^
) sein. Dies gibt shasum
den Modus an, mit dem der Hash generiert wurde. (Hinweis: Kein Zeichen, das den Textmodus darstellt, ist shasum
die Standardeinstellung.)
Der Dateipfad- Teil ist der tatsächliche Pfad zu der zu überprüfenden Datei.
Hier ist ein Beispiel aus der Praxis, in dem eine bestimmte MAMP-Download- Datei mit ihrem angeblichen SHA-256- Wert verglichen wird. Das *
Moduszeichen war erforderlich, damit diese Prüfung funktioniert:
shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'
Hinweis: Das Ergebnis dieses Befehls (für meine Beispieldatei) ist entweder -
OKAY:
MAMP_MAMP_PRO_5.2.pkg: OK
oder
GESCHEITERT:
MAMP_MAMP_PRO_5.2.pkg: FAILED
shasum: WARNUNG: 1 berechnete Prüfsumme stimmte NICHT überein
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'
Gibt die Nachricht zurück *sample.txt: FAILED open or read
. Ohne das Sternchen sample.txt: OK
. Ich konnte die Basis für die Verwendung des Sternchens an anderer Stelle noch nicht finden. Könnten Sie das klären?
--binary
Option) generiert wurde ? Aus der Manpage: "Bei der Überprüfung sollte die Eingabe eine frühere Ausgabe dieses Programms sein. Der Standardmodus ist das Drucken einer Zeile mit Prüfsumme, einem Zeichen, das den Typ angibt ( *
für Binär,` `für Text, U
für UNIVERSAL, ^
für BITS, ?
für portable) und Name für jede DATEI. " Die Zeichen zwischen Prüfsumme und Dateiname hängen also vom Modus ab, der bei der Erstellung der Prüfsumme festgelegt wurde.