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.
arch-linux
hashing
md5
Paradoxo
fonte
fonte
Respostas:
Simplesmente
echo
para o md5sum.O primeiro resultado considerará um caractere de nova linha no final da string, antes de gerar o hash.
Caso contrário, como afirma o @AFH , se você deseja não ter um caractere de nova linha, faça o seguinte:
fonte
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
, masP@ssword1<Newline>
. Use emecho -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, executandomd5sum
, 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.fonte
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 :-)) ...Aqui está um exemplo usando o openssl
Openssl implementar vários algoritmos de hash diferentes, se você precisar de um diferente algum dia.
fonte
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 emprintf
vez disso .Portanto, você deveria estar usando
Com
printf
, se você quiser uma nova linha no final, você tem que explicitamente adicioná-lo: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):Para expandir o ponto sobre as peculiaridades
echo
que mencionei acima, aqui estão algumas:-n
para dizerecho
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.
fonte
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
fonte
Você pode facilmente fazer isso usando
echo
emd5sum
:fonte
-n
aecho
vontade anexar o caractere de nova linha à saída, o hash estará incorreto. Por exemplo, paraecho -n lolwut | md5sum
o resultado05a208028929fd77cfb5b08096a837df
, enquanto paraecho lolwut | md5sum
elef291ceceddd9e13a0ab68cf1829ef583
.