Génération d'un hachage SHA-256 à partir de la ligne de commande Linux


234

Je sais que la chaîne "foobar" génère le hachage SHA-256 en c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2utilisant http://hash.online-convert.com/sha256-generator

Cependant, le shell de ligne de commande:

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

Génère un hachage différent. Qu'est-ce que je rate?


4
sha256sum < foobar. Pas besoin de chat , d' écho , de printf , ... Voir aussi Utilisation inutile de chat?
koppor

7
@koppor < foobarn'est pas le même que echo foobar |. L'équivalent de echo foobar |serait sha256sum <<< foobarmais cela ajoute une nouvelle ligne à foobar comme echo.
mvds

openssl dgst -sha256 foobarfonctionne pour moi sur MacOS High Sierra, alors qu'il a echo -n foobar | openssl dgst -sha256donné une réponse incorrecte.
auspicious99

Réponses:


362

echoproduira normalement une nouvelle ligne, qui est supprimée avec -n. Essaye ça:

echo -n foobar | sha256sum

76
REMARQUE: sur OS X (BSD), c'estecho -n foobar | shasum -a 256
Olie

6
il suffit d'utiliser printf;)
dylnmc

11
Sur OSX, il pourrait être utile de créer un alias:alias sha256sum='shasum --algorithm 256'
Jonathan Cross

1
Pourquoi ça se termine avec * -
Philip Rego

2
@PhilipRego C'est la somme de l'entrée sur stdin, donc au lieu du nom de fichier -est imprimé.
mvds

100

Si vous avez installé openssl, vous pouvez utiliser:

echo -n "foobar" | openssl dgst -sha256

Pour d' autres algorithmes que vous pouvez remplacer -sha256avec -md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, -sha512ou -whirlpool.


Existe-t-il un moyen de spécifier le nombre de tours que vous souhaitez dans sha512? J'ai regardé et je n'ai pas pu le trouver et je me suis demandé si vous le sauriez?
f1lt3r

1
@AlistairMacDonald - Je ne sais pas exactement ce que vous recherchez. AFAIK, SHA512 a besoin de 80 tours; Si vous voulez manipuler la fonction, ce ne sera plus sha512. BTW, vous pouvez rechercher / poser votre question sur crypto.stackexchange.com .
Farahmand

3
Contrairement à la réponse acceptée, cela fonctionne pour MacOS.
weefwefwqg3

45

Si la commande sha256sum n'est pas disponible (sur Mac OS X v10.9 (Mavericks) par exemple), vous pouvez utiliser:

echo -n "foobar" | shasum -a 256


1
Agréable! Je l'ai ajouté à ma fonction .bash_profile sha256 () {echo -n "$ *" | shasum -a 256} et appeler comme: ~ $ sha256 foobar
rbento

Contrairement à la réponse acceptée, cela fonctionne pour MacOS
weefwefwqg3

Ou voulez-vous dire Ubuntu 10.10 (Maverick Meerkat) ? (non, Maverick ). Il est sorti en 2010 alors que Mac OS X v10.9 était sorti un mois avant cette réponse.
Peter Mortensen

29

echo -nfonctionne et ne disparaîtra probablement jamais en raison d'une utilisation historique massive, mais selon les versions récentes de la norme POSIX , les nouvelles applications conformes sont "encouragées à utiliser printf".


8

echoproduit un caractère de fin de ligne qui est également haché. Essayer:

/bin/echo -n foobar | sha256sum 

7

Je crois que cela echoproduit une nouvelle ligne de fuite. Essayez d'utiliser -ncomme paramètre pour faire écho pour sauter la nouvelle ligne.

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.