
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, md5sum
obtenho 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( . (Acontece que não! Veja a resposta aceita.)-n
).Essa parte está clara para mim
Porém, existem ferramentas que dão um terceiro resultado. Todas as ferramentas não CLI parecem oferecero mesmoresultado, e é isso que me confunde:
- http://www.miraclesalad.com/webtools/md5.phpdiz que é
c47d187067c6cf953245f128b5fde62a
. - http://www.md5hashgenerator.com/diz que é
c47d187067c6cf953245f128b5fde62a
. - http://www.md5.cz/diz que é
c47d187067c6cf953245f128b5fde62a
. - http://www.md5online.org/md5-encrypt.htmldiz que é
c47d187067c6cf953245f128b5fde62a
. - http://md5-hash-online.waraxe.us/diz que é
c47d187067c6cf953245f128b5fde62a
. - Este aplicativo Androiddiz que é
c47d187067c6cf953245f128b5fde62a
. echo -n "word" | unix2dos | md5sum
me dác47d187067c6cf953245f128b5fde62a
.
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).