Pourquoi la vérification de la somme de contrôle SHA256 avec `sha256sum` échoue-t-elle sur Debian et fonctionne-t-elle sur Ubuntu?


34

Sur Ubuntu 14.04, sha256sumde coreutilsfonctionne comme prévu:

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

Cependant, la même commande avec le même fichier sur Debian Wheezy échoue:

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

Je ne comprends pas ça. Comment puis-je vérifier la somme de contrôle de manière fiable dans un script shell sur Debian?


Sur Ubuntu 14.04:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Sur Wheezy:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

Les pages de manuel sur les deux systèmes d’exploitation indiquent:

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

Réponses:


45

Il se soucie de l'espacement. Si vous courez:

sha256sum /dev/null

vous recevez

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(deux espaces). Lorsque vous utilisez echocomme ça, il n'y a qu'un espace entre les mots.

La version 8.13 veut que le format exact de sa sortie soit. Si vous utilisez:

echo "$SUM  $FILE" | sha256sum -c

(encore une fois, deux espaces) cela devrait fonctionner. Les versions plus récentes ne se soucient pas du nombre d'espaces, cela fonctionnera donc aussi avec elles.


18
Jeu-questionnaire ajouté: Le deuxième caractère d'espace a en fait une signification. Cela indique que la somme de contrôle a été calculée en mode texte . En revanche, un *devant le nom du fichier indique le mode binaire . Comparez la sortie de sha256sum -t /dev/null(mode texte, valeur par défaut) avec sha256sum -b /dev/null(mode binaire). Cela ne fait apparemment pas une différence sous Unix / Linux, mais pourrait le faire sous Windows .
Dubu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.