As perguntas anteriores do SF que vi levaram a respostas que produzem a senha com hash MD5.
Alguém tem uma sugestão para produzir uma senha com hash SHA-512? Eu preferiria um forro em vez de um script, mas, se um script for a única solução, tudo bem também.
Atualizar
Substituindo as versões anteriores do py2 por esta:
python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"
Editar: Observe que esta resposta tem mais de 10 anos.
Aqui está um forro:
Python 3.3+ inclui
mksalt
em crypt , o que torna muito mais fácil (e mais seguro) de usar:Se você não fornecer um argumento para
crypt.mksalt
(pode aceitarcrypt.METHOD_CRYPT
,...MD5
,SHA256
eSHA512
), ele usará o mais forte disponível.O ID do hash (número após o primeiro
$
) está relacionado ao método utilizado:Eu recomendo que você procure o que são sais e tal e, de acordo com smallclammers, comente a diferença entre criptografia e hash.
Atualização 1: A string produzida é adequada para scripts shadow e kickstart.
Atualização 2: Aviso . Se você estiver usando um Mac, veja o comentário sobre como usar isso em python em um mac onde parece não funcionar conforme o esperado.
No macOS você não deve usar as versões acima, pois o Python usa a versão do sistema
crypt()
que não se comporta da mesma forma e usa criptografia DES insegura . Você pode usar este forro independente de plataforma (requer passlib – instalar compip3 install passlib
):No Debian você pode usar mkpasswd para criar senhas com diferentes algoritmos de hash adequados para /etc/shadow. Está incluído no pacote whois (de acordo com o arquivo apt)
para obter uma lista de algoritmos de hash disponíveis, digite:
HTH
Usando
grub-crypt
Aqui está um código C curto para gerar a senha SHA-512 em vários sistemas operacionais do tipo Unix.
Arquivo:
passwd-sha512.c
compilar:
uso:
Surpreendente que nenhuma resposta sugira o
openssl passwd
comando simples com a-6
opção. Talvez ainda não estivesse disponível em 2011?Se você não se importa em fornecer a senha na linha de comando (arriscando-a permanecer no histórico de comandos), você pode fazer:
Ele irá gerar o sal e produzir uma linha como esta:
Com a
stdin
opção, ele também pode ler a senha do STDIN (ou de um arquivo), para que você não a deixe para trás no histórico:Solução de uma linha Perl para gerar a senha com hash SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Trabalhou no RHEL 6
Por que não executar a seguinte verificação e modificação nas máquinas Centos/RHEL para garantir que todo o hash de senha para /etc/shadow seja feito com sha512. Então você pode simplesmente definir seu passworkd normalmente com o comando passwd
Aqui está um one-liner que usa comandos shell para criar uma senha com hash SHA-512 com um sal aleatório:
Notas
Leia o comentário abaixo para saber mais sobre as implicações de segurança desta resposta
Para aqueles da mentalidade Ruby, aqui está uma frase:
Todos os exemplos usarão SHA-512,
<password>
como espaço reservado para senha e<salt>
como espaço reservado para sal.mkpasswd
Nota:
mkpasswd
o binário é instalado através do pacote somentewhois
no Debian/Ubuntu . Em outras distribuições Linux como ArchLinux, Fedora, CentOS, openSUSE, etc. é fornecido pelo pacote, mas é um utilitário totalmente diferente que está disponível como no Debian / Ubuntu. de todas as outras distribuições Linux não inclui, mas a fonte (C lang) pode ser encontrada no repositório original https://github.com/rfc1036/whois .mkpasswd
expect
expect_mkpasswd
whois
mkpasswd
OpenSSL
Rubi
Obs: para quem reclama que
Random#rand
é um PRNG, pode usar o seguroSecureRandom#rand
mas não é muito importante é o rand é usado apenas para gerar o sal que fica publicamente disponível no hash no final.Perl
Pitão
Requer Python >= 3.3
grub-crypt
Note: The
grub
package doesn't includegrub-crypt
in many distros.