Como criar o hash md5 via linha de comando do Arch Linux?

7

No Arch Linux, como posso criar um único hash md5 para uma senha usando a linha de comando? É claro, estou ciente de que existem algoritmos hash de senhas seguras disponíveis, o que o md5 não é, mas isso é apenas parte de um experimento.

    
por Paradox 20.09.2016 / 16:26

6 respostas

18

Simplesmente echo to md5sum.

O primeiro resultado considerará um caractere de nova linha no final da string, antes de gerar o hash.

$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -

Caso contrário, o @AFH informa se você deseja não ter um caractere de nova linha faça o seguinte:

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
    
por 20.09.2016 / 16:30
11

Nenhuma das respostas menciona que, com echo -n 'password' | … , você irá escrever sua senha para armazenamento persistente, ou seja, seu histórico.

Você pode evitar isso, dependendo do shell, prefixando o comando com um espaço (teste isso para o seu shell). Leia a documentação dos seus shells sobre como isso é tratado.

Como alternativa, você pode usar md5sum diretamente, executando md5sum , digitando a senha e, em seguida, Ctrl + D . Não pressione Enter entre a senha e Ctrl + D , a menos que você queira incluir uma nova linha no hash.

    
por 21.09.2016 / 09:32
8

Aqui está um exemplo usando o openssl

echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68

O Openssl implementa vários algoritmos de hashing diferentes, se você precisar de um algoritmo diferente algum dia.

    
por 20.09.2016 / 17:13
4

Parece que todos estão sugerindo usar echo - pelo menos, na maioria das vezes, felizmente, com -n , o que alivia um seus problemas (que imprime uma nova linha no final).

Mas echo não é necessariamente consistente. Ele tem várias peculiaridades comportamentais que você precisa ter em mente e que podem ser incompatíveis entre sistemas. É melhor usar printf .

Por isso, você deve estar usando

$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

Com printf , se você quiser uma nova linha no final, terá que adicioná-la explicitamente:

$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$

em vez de ter que pedir para não obtê-lo (e esperar que echo funcione da mesma forma no sistema, isso acontece em algum momento posterior):

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

Para expandir o ponto em as peculiaridades de echo que mencionei acima, aqui estão algumas:

  • Funciona de maneira diferente em vários sistemas. Muitos sistemas modernos suportam -n para informar echo para não terminar a saída com uma nova linha, mas alguns podem não. E se você quiser realmente imprimir -n ? Algumas implementações podem realmente diferir com base nas configurações no shell ou no ambiente.
  • Ele manipula, ou pode não manipular, algumas seqüências de caracteres (particularmente caracteres com escape de barra invertida) de uma maneira especial. Não é totalmente irracional ter essas senhas, e o POSIX não garante nada sobre o comportamento do eco (seu comportamento é especificamente undefined ) se o primeiro argumento for -n ou qualquer um dos seus argumentos backslashes.

As respostas para a pergunta acima sobre o uso de printf em vez de echo têm várias outras, assim como links adicionais para mais leitura, se você estiver curioso.

    
por 21.09.2016 / 16:42
3

A pergunta sugere outra coisa para mim, então, para completar:

Existe um método hash de senha com base em MD5, que substituiu a criptografia baseada em DES original () para uso em /etc/shadow . Ele foi substituído por coisas mais novas agora, mas se você encontrar "hash de senha MD5" no estado selvagem, ele pode se referir a isso em vez de um MD5 simples.

Esses hashes baseados no MD5 são marcados pelo prefixo $1$ e você pode calculá-los com openssl passwd -1

    
por 20.09.2016 / 18:34
0

Você pode fazer isso facilmente usando echo e md5sum :

 echo -n "password" | md5sum
    
por 20.09.2016 / 16:28