Questão Como obter o hash MD5 de uma string diretamente no terminal?


Como obtenho o MD5 hash de uma string diretamente do terminal?

Por exemplo, eu quero a string abcdefg hashed. Atualmente o md5sum comando só aceita um nome de arquivo como entrada. Eu quero simplesmente entrar na linha seguinte e tudo ser feito.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Como posso conseguir isso?


151
2017-07-20 11:08


origem


md5 -s abcdefg - raitisd


Respostas:


Você também pode dizer algo assim:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Basicamente faz a mesma coisa descrita por @enzotib, mas é talvez um pouco mais simples.


200
2017-07-20 11:47



Você também deseja atualizar o resultado do exemplo, pois 7803ffca ... é o resultado com a nova linha adicionada. O resultado correto para o comando acima é 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
Por que há espaços e um traço no final? - keune
Por favor, corrija-me se estiver errado, mas acho que isso acontece porque o MD5sum foi aplicado a um fluxo de dados, em vez de ler um conteúdo de arquivo, que tem um nome associado a ele. - jfmessier
Observe que o -n é mandatório. Sem isso, seu hash estará totalmente errado, pois inclui o caractere de nova linha. - Pithikos
Isso também me ajudou no macOS, embora seja um pouco diferente: echo -n Welcome | md5 - Edward J. Stembler


Muito simples, aceita stdin, então

md5sum <<<"my string"

Para evitar a nova linha final adicionada pelo shell:

printf '%s' "my string" | md5sum

59
2017-07-20 11:10



Dar tanto @messier quanto @enzotib uma votação; ambos se enquadram na minha categoria "simplicidade elegante". Eu estaria apto a usar o <<<" canalizar em um script; echo string ganha para a linha de comando. Bem feito. - Tom
+1 para usar printfcorretamente. Se você quiser ter a soma sem o -, colocar | cut -d ' ' -f 1. Exemplo de uso: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
é estranho, mas o <<< operador e o printf função estão dando resultados completamente diferentes para hash md5! o resultado de printf está correto embora! - Hamed Momeni
parece usar o <<< operador envia uma nova linha para o md5sum! - Hamed Momeni
Sim, como eu disse entre o primeiro e o segundo exemplo - enzotib


$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

você pode criar um script de shell.

Por exemplo, o nome do script é md5.sh:

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

permissão executar:

 chmod +x md5.sh

Então:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Se o seu sistema é macOS. Você precisa modificar este script:

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e

21
2018-03-09 04:54



Isso é muito tempo. - Gucho Ca
alternativa ao awk: cut -d ' ' -f 1 - Blauhirn


Executar o 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 terminar a entrada.


9
2017-07-27 15:46



Sim, você está certo também. mas ctrl+d precisa ser pressionado duas vezes para que ele funcione. - Hamed Momeni
@James, se não seguir uma nova linha, sim. Se você acertar depois de entrar, só precisa de uma vez. Quando não segue uma nova linha, apenas força todos os caracteres digitados na linha a serem processados ​​imediatamente, em vez de esperar por uma nova linha. - psusi


openssl md5 filename
openssl sha1 filename

Para pipe de string o conteúdo usando echo

echo -n 123456 | openssl md5

8
2017-12-10 11:13





Minha cutucada rápida no --help para md5sum demonstra que o comando:

md5sum -

Em seguida, fornecerá uma solicitação de entrada simples. Introduzir algum texto e depois usar Entrar e depois Ctrl+D para significar fim do arquivo, em seguida, faz com que md5sum para citar o MD5 do texto bruto que você inseriu (incluindo Entrar, é um CR, IIRC).

Menos para digitar e sem canalização! E evitando que sua senha de texto simples seja registrada no histórico do shell! Woo!

Se você não quer que o CR à direita (que é geralmente o caso se você quiser hash uma senha), não acerte Entrar antes Ctrl+D, entrar Ctrl+D duas vezes em vez disso.


3
2017-08-21 06:00





Nos meus scripts, descobri que há duas coisas que você deve saber sobre esse problema.

  • Não importa se você faz echo "$myvariable" ou echo -n "$myvariable" mas você deve sempre usar o doubleqoutes para strings e sempre usar o mesmo método. se não as coisas não combinam.
  • na saída, você obtém sempre um espaço à direita e um traço, conforme mostrado no exemplo:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

se livrar disso e ficar apenas com o código 7803ffcaea43bb81a439fde13b29bc35, Faz: echo "$myvariable" | md5sum | cut -d" " -f1


2
2017-08-02 13:39



Não esqueça o -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 - derFunk