Warum schlägt die Überprüfung der SHA256-Prüfsumme mit "sha256sum" unter Debian fehl und funktioniert unter Ubuntu?

34

Unter Ubuntu 14.04, sha256sumvon coreutilsWerken wie ich erwartet hatte:

echo 879dd0d7637876be4796f7e6f194a111d21088be85cfe717fc97e2e7f05e79d2 /tmp/myfile | sha256sum -c
/tmp/myfile: OK

Der exakt gleiche Befehl mit der exakt gleichen Datei auf Debian Wheezy schlägt jedoch fehl:

sha256sum: standard input: no properly formatted SHA256 checksum lines found

Ich verstehe das nicht. Wie kann ich die Prüfsumme in einem Shell-Skript unter Debian zuverlässig überprüfen?


Unter Ubuntu 14.04:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Auf Wheezy:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

Hilfeseiten auf beiden Betriebssystemen sagen:

SYNOPSIS
       sha256sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check SHA256 (256-bit) checksums.  With no FILE,
       or when FILE is -, read standard input.

[...]

       -c, --check
              read SHA256 sums from the FILEs and check them
gertvdijk
quelle

Antworten:

45

Es kümmert sich um den Abstand. Wenn du läufst:

sha256sum /dev/null

du erhältst

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(zwei Leerzeichen). Wenn Sie so verwenden echo, steht nur ein Leerzeichen zwischen den Wörtern.

Version 8.13 möchte das genaue Format der Ausgabe. Wenn Sie Folgendes verwenden:

echo "$SUM  $FILE" | sha256sum -c

(wieder zwei Leerzeichen) sollte es funktionieren. Neuere Versionen interessieren sich nicht dafür, wie viele Speicherplätze vorhanden sind, daher funktioniert dies auch mit ihnen.

Michael Homer
quelle
18
Kleinigkeiten hinzugefügt: Das zweite Leerzeichen hat tatsächlich eine Bedeutung. Dies bedeutet, dass die Prüfsumme im Textmodus berechnet wurde . Im Gegensatz dazu *kennzeichnet ein vor dem Dateinamen den Binärmodus . Vergleichen Sie die Ausgabe von sha256sum -t /dev/null(Textmodus, Standard) mit sha256sum -b /dev/null(Binärmodus). Dies macht unter Unix / Linux anscheinend keinen Unterschied, könnte aber unter Windows der Fall sein .
Dubu