Wie kann ich die SHA256-Summe einer Datei ermitteln und sie mit der Prüfung in einer Zeile vergleichen?

Wie kann ich die SHA256-Summe einer Datei ermitteln und sie mit der Prüfung in einer Zeile vergleichen?

Ich möchte ständig etwas herunterladen und die Integrität des Downloads sofort in einem Skript überprüfen, konnte jedoch nicht die richtige Formel dafür finden sha256sum.

MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}

Wie kann ich den Hash sha256sumeiner neuen Datei sofort mit einem bekannten Hash vergleichen?

Antwort1

Ich habe eine Archivdatei und eine zugehörige Prüfsummendatei heruntergeladen. So überprüfe ich, ob der Hash des heruntergeladenen Archivs mit dem Hash der heruntergeladenen Prüfsummendatei übereinstimmt:

echo "$(cat archive.tar.gz.sha256) archive.tar.gz" | sha256sum --check --status

Das --statusFlag verhindert alle stdout-Ausgaben (effektiver als --quiet). Ich muss mich dann auf den Rückgabecode verlassen, um zu bestimmen, ob sie übereinstimmen, was ich sowieso will, da ich dies in einem Skript verwenden werde.

Antwort2

Beispiel:

 echo "67574ee0039eaf4043a237e7c4b0eb432ca07ebf9c7b2dd0667e83bc3900b2cf kali-linux-2019.2-amd64.iso" | sha256sum -c

Falls Sie die sha256sumDatei haben, können Sie sie direkt verwenden:

sha256sum -c "kali-linux-2019.2-amd64.iso.txt.sha256sum"

Erläuterung:

Im obigen Beispiel haben Sie

echo "<known SHA 256 sum of the file> <name of the file>" | sha256sum -c

sha256sum -cMit dieser Option können Sie die SHA256-Summe entweder aus einer sha256sumDatei oder aus lesen STDIN. Falls Sie die Datei nicht haben sha256sum, echokönnen Sie mit dem Befehl dieselben Details angeben, die in einer sha256sumDatei enthalten sind.

Falls Sie die sha256sumDatei haben, können Sie sie direkt verwenden:

sha256sum -c "<sha256sum file name>"

Notiz:

Alternativ können Sie shasum -a 256anstelle von verwenden, sha256sumwobei -ader zu verwendende Algorithmus angibt.

Antwort3

Sie können sehen, dass sha256sum --checkdie Ausgabe eines vorherigen (regulären) sha256sum-Laufs übernommen wird: Es übernimmt Hashes und Dateinamen über stdin und vergleicht sie mit tatsächlichen Dateien.

Daher besteht das Naheliegendste darin, die Ausgabe manuell im gewünschten Format einzugeben:

$ echo "da39a3ee5e6b4b0d3255bfef95601890afd80709  motd" | sha1sum --check
motd: OK

Antwort4

Wenn Sie die Prüfsummendatei haben, können Sie einfach Folgendes tun sha256sum --check. Zum Beispiel:

% ls
elasticsearch-7.9.3-darwin-x86_64.tar.gz           # File to check
elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512    # Checksum file


% sha512sum --check elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512
elasticsearch-7.9.3-darwin-x86_64.tar.gz: OK

verwandte Informationen