
Estoy intentando obtener el hash md5 de una cadena. Dicha cadena consta únicamente de letras y dígitos mayúsculas y minúsculas. Ningún otro carácter, incluidos espacios y nuevas líneas. La cadena se ingresa a través de un teclado, en lugar de una entrada de archivo, por lo que no hay BOM ni otros indicadores presentes.
Si ejecuto localmente usando md5sum
obtengo el siguiente resultado:
ubuntu@ubuntu:~$ echo word | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8 -
ubuntu@ubuntu:~$ echo "word" | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8 -
ubuntu@ubuntu:~$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf -
Conozco la diferencia entre la segunda y la tercera salida anteriores.se debe a la ausencia del carácter de nueva línea( . (¡Resulta que no fue así! Vea la respuesta aceptada).-n
).esta parte me queda clara
Sin embargo, existen herramientas que dan un tercer resultado. Todas las herramientas que no son CLI parecen darlo mismoresultado, y eso es lo que me confunde:
- http://www.miraclesalad.com/webtools/md5.phpdice que es
c47d187067c6cf953245f128b5fde62a
. - http://www.md5hashgenerator.com/dice que es
c47d187067c6cf953245f128b5fde62a
. - http://www.md5.cz/dice que es
c47d187067c6cf953245f128b5fde62a
. - http://www.md5online.org/md5-encrypt.htmldice que es
c47d187067c6cf953245f128b5fde62a
. - http://md5-hash-online.waraxe.us/dice que es
c47d187067c6cf953245f128b5fde62a
. - Esta aplicación para Androiddice que es
c47d187067c6cf953245f128b5fde62a
. echo -n "word" | unix2dos | md5sum
me dac47d187067c6cf953245f128b5fde62a
.
¿Que está pasando aqui?
Respuesta1
$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf -
$ echo "word -n" | md5sum
3a21ca21563e9535a9012daef61a0bdf -
$ echo "-n" word | md5sum
c47d187067c6cf953245f128b5fde62a -
Específicamente, tenga en cuenta que:
$ echo "word" -n
word -n
Todas las opciones deben anteponerse a los argumentos que no son opciones. Este es el caso en la mayoría de los programas, excepto en algunas utilidades GNU, y es el caso en todas las implementaciones de echo
( echo
sin embargo, es especial porque la mayoría de las cadenas que comienzan con -
se interpretan como argumentos, solo unas pocas opciones se reconocen como tales).