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?

hendry
la source
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
mvds
la source
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.

Farahmand
la source
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

Sucrenoir
la source
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".

Nicholas Knight
la source
8

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

/bin/echo -n foobar | sha256sum 
Mainframe nordique
la source
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.

Thomas Owens
la source