Como faço para obter o MD5 hash de um string diretamente a partir do terminal?
Por exemplo, eu quero o abcdefg
hash da string . Atualmente, o comando md5sum aceita apenas um nome de arquivo como entrada. Quero simplesmente inserir a linha a seguir e tudo pronto.
md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f
Como posso conseguir isso?
command-line
md5sum
Hamed Momeni
fonte
fonte
md5 -s abcdefg
Respostas:
Você também pode dizer algo como isto:
Basicamente, faz o mesmo descrito em @enzotib, mas talvez seja um pouco mais simples.
fonte
83218ac34c1834c26781fe4bde918ee4 -
-n
é obrigatório. Sem ele, seu hash estará totalmente errado, pois inclui o caractere de nova linha.-
no final. @jfmessierMuito simples, aceita stdin, então
Para evitar a nova linha à direita adicionada pelo shell:
fonte
<<<"
pipe em um script;echo string
ganha para a linha de comando. Bem feito.printf
corretamente. Se você quiser ter a soma sem o-
, coloque| cut -d ' ' -f 1
. Exemplo de uso:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<
operador e aprintf
função estão dando resultados completamente diferentes para o hash md5! o resultado de printf está correto!<<<
operador envia uma nova linha para o md5sum!você pode criar um script de shell.
Por exemplo, o nome do script é md5.sh:
permissão executar:
Então:
Se o seu sistema for macOS. Você precisa modificar este script:
fonte
cut -d ' ' -f 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }
no .bashrc e depois posso usá-lo$ md5 test
na linha de comando. obrigado pela respostaawk
Comando mais curto :'$0=$1'
A execução do md5sum sem argumentos fará com que ele leia a entrada do terminal. Digite ou cole o que quiser e, quando terminar, pressione
ctrl-d
para finalizar a entrada.fonte
ctrl+d
precisa ser pressionado duas vezes para que funcione.Para canalizar o conteúdo usando eco
fonte
Minha cutucada rápida no
--help
formd5sum
demonstra que o comando:Em seguida, solicitará uma entrada simples. Introduzir algum texto e, em seguida, usar + Entere Ctrl+ Dpara significar o fim do arquivo faz
md5sum
com que cuspa o MD5 do texto bruto que você inseriu (incluindo isso Enter, é um CR, IIRC).Menos para digitar e sem tubulação! E evitando que sua senha de texto sem formatação seja registrada no histórico do shell! Woo!
Se você não deseja esse CR à direita (que geralmente é o caso se você deseja hash uma senha), não pressione Enterantes de Ctrl+ D, digite Ctrl+ Dduas vezes.
fonte
Nos meus scripts, descobri que há duas coisas que você deve saber sobre esse problema.
echo "$myvariable"
ouecho -n "$myvariable"
deve sempre usar doubleqoutes para strings e sempre usar o mesmo método. se não, as coisas não vão combinar.na saída, você sempre obtém um espaço à direita e um traço, como mostra o exemplo:
Para se livrar disso e ficar apenas com o código
7803ffcaea43bb81a439fde13b29bc35
, faça:echo "$myvariable" | md5sum | cut -d" " -f1
fonte
-n
parâmetro aqui para evitar a saída da nova linha à direita, o que levaria a um md5 errado:echo -n $myvariable | md5sum | cut -d" " -f1
Existem muitos exemplos para fazer isso, mas alguns deles não são equivalentes porque alguns deles incluem explícita ou implicitamente a nova linha, e outros não.
Gostaria de especificar claramente quais dos métodos populares incluem a nova linha e quais não.
Aqui estão alguns exemplos para calcular o hash md5 SEM nova linha final (CORRETO):
Usando um arquivo com texto:
Nota:
-n
emecho
significa: "não exibir a nova linha à direita".Usando
echo
com-n
inline:Usando
printf
:Usando apenas o
md5sum
comando:(Vamos escrever
md5sum
, pressione, em Enterseguida, escreva a seqüênciatest
e pressione a combinação dupla Ctrl+ d)Usando o
md5sum -
comando:(Vamos escrever
md5sum -
, pressione, em Enterseguida, escreva a seqüênciatest
e pressione a combinação dupla Ctrl+ d)Aqui estão alguns exemplos para o cálculo do hash md5 com a nova linha à direita (SO NOT CORRECT):
Usando um arquivo com texto:
Usando
echo
SEM-n
inline:Usando aqui as strings :
Usando apenas o
md5sum
comando, mas com a Entertecla, após escrever o texto:(Vamos escrever
md5sum
, pressione, em Enterseguida, escreva a stringtest
e, em seguida, pressione agaien Entere uma vez a combinação Ctrl+ d)Usando o
md5sum -
comando, mas com a Entertecla, após escrever o texto:(Vamos escrever
md5sum -
, pressione, em Enterseguida, escreva a stringtest
e, em seguida, pressione agaien Entere uma vez a combinação Ctrl+ d)fonte