Arrastando espaço ao gerar md5

2

Peço desculpas se isso já foi respondido, ou se a resposta é mais simples do que eu imagino, mas não consigo descobrir o seguinte:

Quando tento gerar um md5 de uma string, seja com

echo -n "string" | md5sum | cut -f1 -d' '


ou com

echo -n "string" | openssl md5


o resultado não é 32 caracteres, como seria de esperar, mas sim 33 (usando wc -c ).


Então, eu tenho algumas perguntas:

  1. Por que o md5sum e o openssl adicionam um espaço à direita?
  2. Existe outra maneira de gerar um hash md5 sem uma nova linha ou espaço à direita?
  3. O espaço à direita é realmente importante?


Obrigado a todos antecipadamente.

    
por Alex Krycek 09.01.2013 / 05:22

1 resposta

4

São 32 caracteres! O md5sum está adicionando um avanço de linha ao final. Você pode se livrar disso assim:

% echo -n string | md5sum|awk '{print $1}'|wc -c
33
% echo -n $(echo -n string | md5sum|awk '{print $1}')|wc -c
32

ou você pode fazer assim:

% echo -n $(md5sum <<< 'string'|awk '{print $1}')|wc -c
32

Você pode dizer quando um dos comandos está adicionando uma nova linha, porque a cadeia de 32 caracteres aparecerá em sua própria linha. Se nenhuma nova linha estiver presente, ela deve sempre aparecer assim:

[prompt %] echo -n $(md5sum <<< 'string'|awk '{print $1}')
b80fa55b1234f1935cea559d9efbc39a[prompt %]
    
por 09.01.2013 / 05:52