Sé que la cadena "foobar" genera el hash SHA-256 c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2usando
http://hash.online-convert.com/sha256-generator
Sin embargo, la línea de comando shell:
hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f -
Genera un hash diferente. ¿Qué me estoy perdiendo?

sha256sum < foobar. No necesita cat , echo , printf , ... Consulte también ¿ Uso inútil de cat?< foobarno es lo mismo queecho foobar |. El equivalente paraecho foobar |sería,sha256sum <<< foobarpero eso agrega una nueva línea a foobar al igual queecho.openssl dgst -sha256 foobarfunciona para mí en MacOS High Sierra, mientras queecho -n foobar | openssl dgst -sha256dio una respuesta incorrecta.Respuestas:
echonormalmente generará una nueva línea, que se suprime con-n. Prueba esto:fuente
echo -n foobar | shasum -a 256printf;)alias sha256sum='shasum --algorithm 256'-se imprime.Si lo ha instalado
openssl, puede usar:Para otros algoritmos se puede reemplazar
-sha256con-md4,-md5,-ripemd160,-sha,-sha1,-sha224,-sha384,-sha512o-whirlpool.fuente
Si el comando sha256sum no está disponible (en Mac OS X v10.9 (Mavericks) por ejemplo), puede usar:
echo -n "foobar" | shasum -a 256fuente
echo -nfunciona y es poco probable que desaparezca debido al uso histórico masivo, sin embargo, según las versiones recientes del estándar POSIX , se alienta a las nuevas aplicaciones conformes a usarprintf.fuente
echoproduce un carácter de nueva línea al final que también está en hash. Tratar:fuente
Creo que eso
echogenera una nueva línea final. Intente usar-ncomo parámetro para hacer eco para omitir la nueva línea.fuente