Você pode (ab) usar htpasswd
no pacote apache-utils , desde que tenha a versão 2.4 ou superior.
htpasswd -bnBC 10 "" password | tr -d ':\n'
-b
pega a senha do segundo argumento de comando
-n
imprime o hash em stdout em vez de
-B
gravá- lo em um arquivo instrui a usar bcrypt
-C 10
define o custo de bcrypt para 10
O comando bare htpasswd gera no formato <name>: <hash> seguido por duas novas linhas. Daí a sequência vazia para o nome e a tr
remoção dos dois pontos e das novas linhas.
O comando gera bcrypt com $2y$
prefixo, o que pode ser um problema para alguns usos, mas pode ser facilmente corrigido por outro, uma sed
vez que a variante OpenBSD usando $2a$
é compatível com a variante crypt_blowfish fixa usando $2y$
.
htpasswd -bnBC 10 "" password | tr -d ':\n' | sed 's/$2y/$2a/'
Link para a página do manual htpasswd: https://httpd.apache.org/docs/2.4/programs/htpasswd.html
Detalhes sobre as variantes do bcrypt: /programming//a/36225192/6732096
Você pode usar uma biblioteca Python. No meu sistema Fedora eu fiz:
(o sudo é apenas para evitar desperdiçar espaço para um cache dnf do usuário) e, a partir do resultado, é possível ver que há um pacote Python2 e Python3:
Instale a versão do Python2 e liste os arquivos no pacote:
Isso mostra que há um arquivo
/usr/lib64/python2.7/site-packages/bcrypt/__init__.py
para que eu possa obter a documentação comIsso me mostra o suficiente para escrever o seguinte comando que fará o hash da string
"password"
:Para versões posteriores de
bcrypt
uso emrounds=
vez delog_rounds=
.fonte
sudo
executardnf search
, ele funciona bem como um usuário padrão.log_rounds
parece ter mudado pararounds
torná-lopython -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(rounds=10)))'
.Adicional à
@Disassembler
resposta de:ps
)15
é um bom equilíbrio para a velocidade de geração de complexidade / senhaScript de wrapper para
htpasswd
&bcrypt
:fonte
root
usuário, é uma boa ideia criar um link simbólico/dev/null
.