349 votes

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

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

Cependant, le shell de la ligne de commande :

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

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

6 votes

sha256sum < foobar . Pas besoin de chat , echo , printf , ... Voir aussi Utilisation inutile du chat ?

14 votes

@koppor < foobar n'est pas la même chose que echo foobar | . L'équivalent pour echo foobar | serait sha256sum <<< foobar mais cela ajoute une nouvelle ligne à foobar tout comme echo .

539voto

mvds Points 26475

echo produira normalement une nouvelle ligne, qui est supprimée par la commande -n . Essayez ceci :

echo -n foobar | sha256sum

0 votes

Est-ce que cette commande sha256sum comme la commande digest dans Solaris ? ?

0 votes

Semble être le cas, opensolarisforum.org/man/man1/digest.html , digest -a sha256 devrait le faire.

106 votes

NOTE : sous OS X (BSD), c'est echo -n foobar | shasum -a 256

129voto

Farahmand Points 449

Si vous avez installé openssl vous pouvez l'utiliser :

echo -n "foobar" | openssl dgst -sha256

Pour les autres algorithmes, vous pouvez remplacer -sha256 avec -md4 , -md5 , -ripemd160 , -sha , -sha1 , -sha224 , -sha384 , -sha512 ou -whirlpool .

0 votes

Y a-t-il un moyen de spécifier le nombre de tours que vous voulez dans sha512 ? Je l'ai cherché et ne l'ai pas trouvé, et je me demandais si vous le saviez ?

2 votes

@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 chercher / poser votre question dans crypto.stackexchange.com .

54voto

Sucrenoir Points 1417

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

2 votes

Joli ! J'ai ajouté ceci à mon .bash_profile function sha256() { echo -n "$*" | shasum -a 256 } et appeler comme : ~$ sha256 foobar

2 votes

Ou voulez-vous dire _Ubuntu 10.10 (Maverick Meerkat)_ ? (sans "s", Maverick ). Il a été publié en 2010 alors que Mac OS X v10.9 a été publié un mois avant cette réponse.

37voto

Nicholas Knight Points 9293

echo -n fonctionne et il est peu probable qu'il disparaisse un jour en raison de son utilisation massive dans le passé. la norme POSIX les nouvelles applications conformes sont "encouragées à utiliser les technologies suivantes printf ".

9voto

Thomas Owens Points 45042

Je crois que echo produit une nouvelle ligne à la fin. Essayez d'utiliser -n comme paramètre à echo pour sauter la nouvelle ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X