1001Ferramentas
🛡️ Dev

Gerador de .htpasswd (bcrypt)

Gera a linha do .htpasswd com hash bcrypt de verdade (prefixo $2y$), o esquema recomendado pelo Apache. Você escolhe o custo e tudo é calculado no navegador.

bcrypt de verdade, calculado no seu navegador — nada é enviado para servidor. O salt é sorteado a cada clique, então a mesma senha gera um hash diferente toda vez. Isso é esperado.

A linha do .htpasswd, com bcrypt calculado no navegador

O .htpasswd é o arquivo que guarda usuário e senha da autenticação básica do Apache e do nginx. Cada linha tem o nome do usuário, dois-pontos e o hash da senha — a senha em si nunca aparece. Entre os esquemas que o Apache aceita, o bcrypt é o recomendado: ele foi desenhado para ser lento de propósito, o que torna a quebra por força bruta cara mesmo com hardware dedicado.

Informe usuário, senha e o custo, e a página devolve a linha pronta. O custo é o fator de trabalho: cada ponto a mais dobra o tempo de cálculo. Custo 10 leva alguns décimos de segundo, custo 14 já passa de um segundo — e é essa lentidão que protege o arquivo se ele vazar. O tempo medido aparece embaixo do resultado, o que ajuda a escolher: a regra prática é subir o custo até o cálculo levar algo entre 200 e 500 milissegundos no servidor onde o login vai rodar.

O cálculo acontece inteiro no seu navegador, então a senha não trafega para lugar nenhum. O salt de 16 bytes é sorteado a cada clique, e por isso a mesma senha gera uma linha diferente toda vez — é assim que deve ser: o salt é o que impede que duas contas com a mesma senha tenham o mesmo hash. Qualquer uma das linhas geradas autentica normalmente.

Perguntas frequentes

Qual custo devo usar?
Dez é o padrão do htpasswd e continua razoável. Doze é uma escolha comum em 2026 para dados sensíveis. O critério não é o número: é o tempo no servidor onde a autenticação roda. Meça, e escolha o maior custo que ainda deixe o login imperceptível para quem entra — lembrando que esse custo é pago a cada requisição autenticada.
Por que o hash muda toda vez que eu clico?
Por causa do salt aleatório, que faz parte do hash e vai gravado nele — são os 22 caracteres logo depois do $2y$NN$. Na hora de conferir a senha, o servidor lê o salt do próprio hash e refaz o cálculo. Ter hashes diferentes para a mesma senha é justamente o que derruba ataque por tabela pré-calculada.
O prefixo $2y$ é diferente de $2a$ ou $2b$?
Os três marcam variantes do mesmo algoritmo. O $2a$ é o original; o $2y$ apareceu no PHP para sinalizar a correção de um bug de tratamento de caractere de 8 bits; o $2b$ é a versão do OpenBSD com a mesma correção. Para senha ASCII os três produzem o mesmo resultado, e o Apache aceita todos. O $2y$ é o que o htpasswd -B gera.

Ferramentas Relacionadas