Inconsistencias en las sumas de verificación MD5

2

Estoy tratando de obtener el hash md5 de una cadena. Dicha cadena consta solo de letras mayúsculas y minúsculas y dígitos. No hay otros personajes, incluidos espacios y líneas nuevas. La cadena se ingresa a través de un teclado, en lugar de una entrada de archivo, por lo que no hay BOM u otras banderas presentes.

Si ejecuto localmente md5sum, obtengo el siguiente resultado:

ubuntu@ubuntu:~$ echo word | md5sum 
a46ec67a0f2e7c387926ac5d783ea4b8 - 

ubuntu@ubuntu:~$ echo "word" | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8  - 

ubuntu@ubuntu:~$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf  -

Sé que la diferencia entre las salidas 2 y 3 anteriores se debe a la ausencia del carácter de nueva línea ( -n). Esta parte es clara para mi. (¡Resulta que no lo fue! Vea la respuesta aceptada).

Sin embargo, hay herramientas que dan un tercer resultado. Todas las herramientas que no son CLI parecen dar el mismo resultado, y eso es lo que me confunde:

¿Que está pasando aqui?

Ese chico brasileño
fuente

Respuestas:

4
$ 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 venir antes de los argumentos que no son opciones. Este es el caso en la mayoría de los programas, excepto en algunas utilidades de GNU, y es el caso en toda la implementación de echo( echoes especial, sin embargo, -dado que la mayoría de las cadenas que comienzan se interpretan como argumentos, solo se reconocen algunas opciones como tales).

Gilles
fuente
1
Un mejor ejemplo podría ser simplemente mostrar la salida de echo "word" -n. ¡Bastante claro por qué está fallando cuando ves eso!
derobert