Perché la verifica del checksum SHA256 con `sha256sum` fallisce su Debian e funziona su Ubuntu?


34

Su Ubuntu 14.04, sha256sumdalle coreutilsopere come mi aspettavo:

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

Tuttavia, lo stesso comando esatto con lo stesso file esatto su Debian Wheezy fallisce:

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

Non lo capisco Come posso verificare il checksum in modo affidabile in uno script di shell su Debian?


Su Ubuntu 14.04:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Su Wheezy:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

le manpage su entrambi i sistemi operativi dicono:

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

Risposte:


45

Si preoccupa della spaziatura. Se corri:

sha256sum /dev/null

hai capito

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(due spazi). Quando usi echocosì, c'è solo uno spazio tra le parole.

La versione 8.13 vuole il formato esatto in cui si trova il suo output. Se si utilizza:

echo "$SUM  $FILE" | sha256sum -c

(di nuovo, due spazi) dovrebbe funzionare. Le versioni più recenti non si preoccupano di quanti spazi ci siano, quindi funzionerà anche con loro.


18
Aggiunta curiosità: il secondo personaggio spaziale ha in effetti un significato. Indica che il checksum è stato calcolato in modalità testo . Al contrario, un *davanti al nome del file indica la modalità binaria . Confronta l'output di sha256sum -t /dev/null(modalità testo, impostazione predefinita) con sha256sum -b /dev/null(modalità binaria). Questo non fa differenza su Unix / Linux, a quanto pare, ma potrebbe su Windows .
Dubu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.