No Arch Linux, como posso criar um único hash md5 para uma senha usando a linha de comando? É claro que estou ciente de que existem algoritmos de hash de senhas seguras disponíveis, o que o md5 não é, mas isso é apenas parte de um experimento.
No Arch Linux, como posso criar um único hash md5 para uma senha usando a linha de comando? É claro que estou ciente de que existem algoritmos de hash de senhas seguras disponíveis, o que o md5 não é, mas isso é apenas parte de um experimento.
Respostas:
Simplesmente echo
para o 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 afirma o @AFH , se você deseja não ter um caractere de nova linha, faça o seguinte:
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
echo -n 'P@ssword1' | md5sum
. Incluí citações na senha, caso ela inclua caracteres que o shell interpreta; Eu usei aspas simples para inibir a expansão se houver um $
.
P@ssword1
, mas P@ssword1<Newline>
. Use em echo -n P@ssword1 | md5sum
vez disso.
Nenhuma das respostas menciona isso 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.
Alternativamente, você pode usar md5sum
diretamente, executando md5sum
, digitando a senha e depois Ctrl+D. Não bata Enterentre a senha e Ctrl+D, a menos que você queira incluir uma nova linha no hash.
8-O
(quantos furos de segurança ele abre ...). BTW se a variável $HISTCONTROL
estiver definida como ignorespace ou ignorar todos os comandos inseridos com um espaço à esquerda não serão armazenados no histórico ... No entanto, é sempre uma boa ideia testá-la diretamente. (+1 de novo :-)) ...
Parece que todos estão sugerindo usar echo
- pelo menos, na maioria das vezes, felizmente, com -n
, o que alivia um dos 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 em printf
vez disso .
Portanto, você deveria estar usando
$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
Com printf
, se você quiser uma nova linha no final, você tem que explicitamente adicioná-lo:
$ 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 ponto posterior):
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
Para expandir o ponto sobre as peculiaridadesecho
que mencionei acima, aqui estão algumas:
-n
para dizer 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.-n
ou se algum de seus argumentos contiver barras invertidas.As respostas para a pergunta acima sobre o uso de printf em vez de eco têm várias outras, assim como links adicionais para mais leitura se você estiver curioso.
A questão sugere outra coisa para mim, então, para completar:
Existe um método hash de senhas salgadas 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 em MD5 são marcados pelo prefixo $1$
e você pode calculá-los comopenssl passwd -1
Você pode facilmente fazer isso usando echo
e md5sum
:
echo -n "password" | md5sum
-n
a echo
vontade anexar o caractere de nova linha à saída, o hash estará incorreto. Por exemplo, para echo -n lolwut | md5sum
o resultado 05a208028929fd77cfb5b08096a837df
, enquanto para echo lolwut | md5sum
ele f291ceceddd9e13a0ab68cf1829ef583
.