Eu sei que a string "foobar" gera o hash SHA-256 c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
usando
http://hash.online-convert.com/sha256-generator
No entanto, o shell da linha de comando:
hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f -
Gera um hash diferente. o que estou perdendo?
sha256sum < foobar
. Não há necessidade de gato , eco , impressão ... Veja também Uso inútil de gato?< foobar
não é o mesmo queecho foobar |
. O equivalente aecho foobar |
seria,sha256sum <<< foobar
mas isso adiciona uma nova linha ao foobar da mesma formaecho
.openssl dgst -sha256 foobar
funciona para mim no MacOS High Sierra, enquantoecho -n foobar | openssl dgst -sha256
deu uma resposta incorreta.Respostas:
echo
normalmente gera uma nova linha, que é suprimida com-n
. Tente o seguinte:fonte
echo -n foobar | shasum -a 256
printf
;)alias sha256sum='shasum --algorithm 256'
-
é impresso.Se você instalou
openssl
, você pode usar:Para outros algoritmos que você pode substituir
-sha256
com-md4
,-md5
,-ripemd160
,-sha
,-sha1
,-sha224
,-sha384
,-sha512
ou-whirlpool
.fonte
Se o comando sha256sum não estiver disponível (no Mac OS X 10.9 (Mavericks) por exemplo), você poderá usar:
echo -n "foobar" | shasum -a 256
fonte
echo -n
funciona e é pouco provável que desapareça devido ao uso histórico maciço, no entanto, por versões recentes do padrão POSIX , novos aplicativos em conformidade são "encorajados a usarprintf
".fonte
echo
produz um caractere de nova linha à direita que também é hash. Experimentar:fonte
Eu acredito que
echo
gera uma nova linha à direita. Tente usar-n
como parâmetro para ecoar para pular a nova linha.fonte