Inconsistências nas somas de verificação MD5

Inconsistências nas somas de verificação MD5

Estou tentando obter o hash md5 de uma string. A referida string consiste apenas em letras maiúsculas e minúsculas e dígitos. Nenhum outro caractere, incluindo espaços e novas linhas. A string é inserida por meio de um teclado, em vez de uma entrada de arquivo, portanto, não há BOM ou outros sinalizadores presentes.

Se eu executar localmente usando, md5sumobtenho a seguinte saída:

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

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

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

Eu sei a diferença entre a 2ª e a 3ª saídas acimaé devido à ausência do caractere de nova linha( -n).Essa parte está clara para mim. (Acontece que não! Veja a resposta aceita.)

Porém, existem ferramentas que dão um terceiro resultado. Todas as ferramentas não CLI parecem oferecero mesmoresultado, e é isso que me confunde:

O que está acontecendo aqui?

Responder1

$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf  -
$ echo "word -n" | md5sum
3a21ca21563e9535a9012daef61a0bdf  -
$ echo "-n" word | md5sum
c47d187067c6cf953245f128b5fde62a  -

Especificamente, observe que:

$ echo "word" -n
word -n

Todas as opções devem vir antes dos argumentos sem opção. Este é o caso na maioria dos programas, exceto alguns utilitários GNU, e é o caso em todas as implementações de echo( echoé especial, no entanto, porque a maioria das strings que começam com -são interpretadas como argumentos, apenas algumas opções são reconhecidas como tal).

informação relacionada