Como criar hash md5 através da linha de comando do Arch Linux?

Como criar hash md5 através da linha de comando do Arch Linux?

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 seguros de hash de senha disponíveis, o que o md5 não existe, mas isso é apenas parte de um experimento.

Responder1

Simplesmente echopara 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, como@AFHafirma que se você deseja não ter um caractere de nova linha, faça o seguinte:

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

Responder2

Nenhuma das respostas menciona que com echo -n 'password' | …você escreverá sua senha no 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 do seu shell sobre como isso é tratado.

Alternativamente, você pode usar md5sumdiretamente, executando md5sum, digitando a senha e depois Ctrl+D. Não digite Enterentre a senha e Ctrl+D, a menos que queira incluir uma nova linha no hash.

Responder3

Aqui está um exemplo usando openssl

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

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

Responder4

Parece que todo mundo está sugerindo usar echo- pelo menos, na maioria das vezes, felizmente, com -n, o que aliviaumde seus problemas (que imprime uma nova linha no final).

Mas echonão é necessariamente consistente. Ele possui uma série de peculiaridades comportamentais que você precisa ter em mente e pode ser incompatível entre sistemas. É melhor parause printfem vez disso.

Portanto, você deve usar

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

Com printf, se você quiser uma nova linha no final, você mesmo deverá 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 echofuncione da mesma forma no sistema, ele estará sendo executado em algum momento posterior):

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

Para expandir o ponto emas peculiaridades deechoque mencionei acima, aqui estão alguns:

  • Funciona de maneira diferente em vários sistemas. Muitos sistemas modernos suportam -ndizer echopara não encerrar a saída com uma nova linha, mas alguns talvez não. E se você quiser realmente imprimir -n? Algumas implementações podem realmente diferir com base emconfiguraçõesno shell ou ambiente.
  • Ele lida, ou pode não lidar, com algumas sequências de caracteres (particularmente caracteres com escape de barra invertida) de uma maneira especial. Não é totalmente irracional tê-los em senhas, e o POSIX não garante nada sobre o comportamento do echo (seu comportamento é especificamenteindefinido) se o primeiro argumento for -nou algum de seus argumentos contiver barras invertidas.

As respostas para a pergunta acima sobre o uso de printf em vez de echo têm vários outros, bem como outros links para mais leituras, se você estiver curioso.

informação relacionada