Sé que la cadena "foobar" genera el hash SHA-256 c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
usando
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?< foobar
no es lo mismo queecho foobar |
. El equivalente paraecho foobar |
sería,sha256sum <<< foobar
pero eso agrega una nueva línea a foobar al igual queecho
.openssl dgst -sha256 foobar
funciona para mí en MacOS High Sierra, mientras queecho -n foobar | openssl dgst -sha256
dio una respuesta incorrecta.Respuestas:
echo
normalmente generará una nueva línea, que se suprime con-n
. Prueba esto:fuente
echo -n foobar | shasum -a 256
printf
;)alias sha256sum='shasum --algorithm 256'
-
se imprime.Si lo ha instalado
openssl
, puede usar:Para otros algoritmos se puede reemplazar
-sha256
con-md4
,-md5
,-ripemd160
,-sha
,-sha1
,-sha224
,-sha384
,-sha512
o-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 256
fuente
echo -n
funciona 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
echo
produce un carácter de nueva línea al final que también está en hash. Tratar:fuente
Creo que eso
echo
genera una nueva línea final. Intente usar-n
como parámetro para hacer eco para omitir la nueva línea.fuente