204 votes

J'ai besoin d'un client pour vérifier le hachage sha256 d'un fichier.

Pour vérifier le sha1 d'un fichier, j'utiliserais openssl sha1 <file> Je ne suis pas sûr de ce qu'il faut utiliser pour vérifier le hachage sha256 du fichier, que me conseillez-vous ?

265voto

janm Points 2812

Vous pouvez utiliser

openssl dgst -sha256 <file>

Testé avec LibreSSL 2.6.4 sur MacOS 10.14 (Mojave).


Avant Mojave, vous pouvez utiliser openssl sha -sha256 <file> ou openssl sha256 <file> .

Pour vérifier les options de ligne de commande pour la commande openssl sha : openssl sha -help .

1 votes

Il est également portable et fonctionne sous Ubuntu.

0 votes

Vous devrez peut-être utiliser /usr/bin/openssl explicitement

1 votes

"Avant Mojave" - openssl sha256 <file> fonctionne toujours, sur MacOS Catalina, à partir de novembre 2020.

131voto

shsteimer Points 8749

OS X est livré avec un commande shasum .

> which shasum
/usr/bin/shasum

Vous pouvez utiliser :

> shasum -a 256 <file>

Plus de détails :

> 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

0 votes

Hmm je ne semble pas l'avoir sur osx 10.11.3. which shashum ne produit rien

4 votes

@erikvold Tu sais quoi ? Je parie que j'ai obtenu avec les outils de ligne de commande Xcode. Argh. J'aimerais vraiment qu'Apple ne pollue pas /usr/bin avec des éléments optionnels. Je vais devoir vérifier que c'est bien le cas dans la journée. Je mettrai à jour la réponse si cela provient effectivement de l'installation de XCL.

2 votes

shasum renvoie un hachage différent de celui de openssl sha -sha256 <file> (ce dernier étant le hachage correct). Savez-vous pourquoi ?

14voto

leanne Points 486

Pour clarifier La réponse utile de @John - qui vous permet de comparer un hachage donné avec son fichier en une seule commande :

Entrez shasum -a 256 -c <<< ,
suivi d'un espace facultatif,
suivi d'une simple tique ( ' ),
suivi du hachage à comparer,
suivi d'un espace,
suivi d'un caractère de mode, basé sur la façon dont le hachage initial a été généré :

  • rien si le hachage a été créé avec -t ou aucune option (mode texte, qui est le mode par défaut)

  • astérisque ( * ), si le hachage a été créé avec -b (mode binaire)

  • point d'interrogation ( ? ), si le hachage a été créé avec -p (mode portable)

  • caret ( ^ ), si le hachage a été créé avec -0 (mode bits)

suivi du chemin d'accès au fichier,
suivi d'une simple tique de fermeture ( ' ).

Comme la décomposition suivante, avec des parenthèses de délimitation autour des parties hash et filepath, et des crochets autour de la partie facultative "mode character". ( N'incluez pas les parenthèses ou les crochets dans la vie réelle - ils sont juste là pour rendre les parties faciles à voir ! )

shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'

Ventilation :

L'actuel shasum La commande est shasum -a 256 -c

  • -a 256 dit à shasum à utiliser sha256 .

  • -c dit à shasum pour "vérifier" l'entrée fournie.

El <<< est un jeu de caractères spécial d'Unix/Linux, appelé opérateur de "redirection". Il sert à introduire quelque chose dans une commande antérieure. En l'utilisant, nous disons que nous allons fournir une chaîne d'informations à la commande shasum à utiliser comme entrée.

La chaîne d'informations d'entrée doit comporter des tics simples d'ouverture et de fermeture, tels que 'some string here' ou, dans ce cas, le hachage, le caractère de mode et le chemin de fichier à vérifier.

  • El dièse à l'intérieur de la chaîne n'a pas besoin de quelque chose de spécial - mais elle doit être suivie d'un espace.

  • El caractère de mode peut être rien, un astérisque ( * ), un point d'interrogation ( ? ), ou un signe d'insertion ( ^ ). Cela signifie que shasum le mode avec lequel le hachage a été généré. (Note : aucun caractère, représentant le mode texte, n'est shasum par défaut).

  • El chemin d'accès au fichier est le chemin d'accès réel au fichier à vérifier.


Voici donc un exemple concret de vérification d'un particulier Télécharger MAMP contre son prétendu SHA-256 valeur. Le site * était nécessaire pour que ce contrôle fonctionne :

shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'

Note : le résultat de cette commande (pour mon fichier d'exemple) est soit -

OK :

MAMP_MAMP_PRO_5.2.pkg : OK

ou

ÉCHEC :

MAMP_MAMP_PRO_5.2.pkg : FAILED
shasum : WARNING : 1 somme de contrôle calculée ne correspond PAS

0 votes

Pour moi, cela fonctionne sans l'astérisque devant le nom de fichier (ainsi qu'avec l'astérisque).

0 votes

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt' renvoie le message *sample.txt: FAILED open or read . Sans l'astérisque, sample.txt: OK . Je n'ai pas encore pu trouver le fondement de l'utilisation de l'astérisque ailleurs. Pourriez-vous préciser ?

1 votes

La présence de l'astérisque indique-t-elle que la somme de contrôle utilisée comme entrée dans l'exemple a été générée en mode binaire ( avec l'option --binary ) ? Extrait de la page de manuel : "Lors de la vérification, l'entrée doit être une ancienne sortie de ce programme. Le mode par défaut est d'imprimer une ligne avec la somme de contrôle, un caractère indiquant le type ( * pour le binaire, ` ` pour le texte, U pour UNIVERSAL, ^ pour le BITS, ? pour le portable), et le nom pour chaque FICHIER". Donc, les caractères entre la somme de contrôle et le nom du fichier dépendent du mode défini lors de la création de la somme de contrôle ?

12voto

John Points 693

J'utiliserais cette commande.

shasum -a 256 -c <<<'_paste hash to compare here_ *_path to file goes here_'

Exemple :

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X