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

142

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

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

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Como posso conseguir isso?

    
por Hamed Momeni 20.07.2011 / 13:08

7 respostas

187

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.

    
por jfmessier 20.07.2011 / 13:47
57

Muito simples, aceita stdin, então

md5sum <<<"my string"

Para evitar a nova linha final adicionada pelo shell:

printf '%s' "my string" | md5sum
    
por enzotib 20.07.2011 / 13:10
19
$ echo -n 123456 | md5sum | awk '{print }'
e10adc3949ba59abbe56e057f20f883e

você pode criar um script de shell.

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

#!/bin/bash

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

permissão de execução:

 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 }' 
e10adc3949ba59abbe56e057f20f883e
    
por ty4z2008 09.03.2015 / 05:54
9

Executar md5sum sem nenhum argumento 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.

    
por psusi 27.07.2011 / 17:46
6
openssl md5 filename
openssl sha1 filename

Para pipe de string o conteúdo usando echo

echo -n 123456 | openssl md5
    
por guest 10.12.2015 / 12:13
3

Meu teste rápido no --help para md5sum demonstra que o comando:

md5sum -

irá então dar um aviso para uma entrada simples. Introduzir algum texto e depois usar Enter e então Ctrl + D para indicar o final do arquivo, então faz com que md5sum cuspa o MD5 do texto bruto que você digitou (incluindo o Enter , é 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 aquele CR à direita (o que geralmente é o caso se você quiser hash uma senha), não pressione Enter antes de Ctrl + D , digite Ctrl + D duas vezes.

    
por Will 21.08.2013 / 08:00
2

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  -
    

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

    
por Bodo Hugo Barwich 02.08.2014 / 15:39