Páginas

sexta-feira, 22 de fevereiro de 2013

Gerar Hashs em Linux

Recentemente precisei gerar hashs SHA de alguns passwords para configurações de autenticação em alguns aplicativos. Precisava gerar estas informações de algum modo oculto e confiável, procurei na internet e não achei nenhuma informação direta, mas com base em algumas dicas cheguei em uma solução para console Linux.

OpenSSL

Esta dica faz uso do OpenSSL, se preferir é possível modificar o script para uso dos comandos shasum.

Praticidade

Não quis criar um arquivo shell script ou similar, que apesar de permitir mais possibilidades tem o inconveniente de precisar criar o arquivo antes de rodar quando utilizando em uma nova máquina, então parti para um script em linha que possa ser (relativamente) facilmente lembrado.
Ao executar o script você pode notar que o texto a ser computado é solicitado apenas uma vez, e normalmente em passwords nós realizamos duas entradas para confirmar a entrada. Apesar de possível, isto iria dificultar a memorização do script, então, para confirmar o hash execute o comando duas vezes utilizando o histórico de comandos do console (seta para cima).

O comando

$ read -s -p "Texto: " psw; echo -n -e "\nHash SHA1: "; echo -n $psw | openssl dgst -sha1
Analisando passo-a-passo:
1. read -s -p "Texto: " psw;
Captura informação da entrada padrão do console "stdin", mostrando um prompt (-p "Texto:") ao usuário, sem exibir a informação digitada (-s), e armazenando a entrada na variável "psw".
2. echo -n -e "\nHash SHA1: ";
Exibe no console uma informação preparando para o posicionamento do hash gerado, sem pular linhas (-n), habilitando a interpretação de escapes (-e) e pulando uma linha do prompt de entrada (\n).
3. echo -n $psw |
Encaminha (|) para o próximo comando o valor da variável psw sem quebra de linha (-n).
* A opção -n é importante para não gerar valores errados de hash, pois o echo, por padrão, inclui uma quebra de linha no fim da exibição.
4. openssl dgst -sha1
E, finalmente, gera o hash (dgst) com o openssl. É possível utilizar qualquer algoritmo disponível no openssl substituindo o parâmetro "-sha1" (sha256, md5, ...).

Nenhum comentário:

Postar um comentário

Olá! Antes de postar seu comentário, por favor, observe que comentários técnicos, elogios e sugestões são antecipadamente agradecidos, esclarecimentos sobre os conceitos envolvidos na postagem serão respondidos da melhor forma possível, mas pedidos de ajuda técnica ou suporte individual deverão ser feitos através do formulário de contato. Grato!