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 echo
para 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 md5sum
diretamente, 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 echo
nã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 printf
em 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 echo
funcione 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 deecho
que mencionei acima, aqui estão alguns:
- Funciona de maneira diferente em vários sistemas. Muitos sistemas modernos suportam
-n
dizerecho
para 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
-n
ou 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.