Gerador htpasswd — bcrypt, Apache MD5 (apr1) e Basic Auth
Gere entradas htpasswd com bcrypt, Apache MD5 (apr1), SHA-1 e mais. Obtenha configuracoes prontas para Apache, nginx e Docker. 100% no seu navegador — sem upload.
Verificar hash existente
O que e um arquivo htpasswd?
Um arquivo .htpasswd armazena as credenciais usadas pela autenticacao HTTP Basic. Cada linha e um par usuario:hash, onde o hash e um digest unidirecional da senha — o texto em claro nunca e armazenado. Os servidores web leem esse arquivo para decidir quem pode acessar uma URL protegida. No Apache, um arquivo .htaccess (ou um bloco <Directory>) referencia o arquivo .htpasswd e solicita ao navegador um nome de usuario e senha antes de servir a pagina.
O formato do hash depende do algoritmo que o gerou. A ferramenta htpasswd do Apache pode emitir varios: bcrypt (linhas iniciadas com $2y$) e o mais forte e recomendado para Apache, Docker Registry e Caddy; apr1 (Apache MD5, iniciado com $apr1$) e o mais portatil e o padrao seguro para nginx; SHA-1 (iniciado com {SHA}) e sem salt e considerado inseguro; crypt (DES tradicional) e legado e trunca em 8 caracteres; e plain armazena a senha em texto claro, o que nunca deve ser usado em producao.
Este gerador funciona inteiramente no seu navegador — nenhum nome de usuario, senha ou hash e enviado. Se precisar de uma senha forte para acompanhar a entrada, use nosso Gerador de Senhas Aleatorias. Para construir o cabecalho Authorization: Basic manualmente, a credencial e apenas base64(usuario:senha), que voce pode produzir com nosso Codificador Base64. E quando o seu endpoint estiver protegido, teste-o pela linha de comando com nosso Construtor de Comandos cURL.
# Apache htpasswd CLI equivalents (apache2-utils / httpd-tools) # bcrypt entry, printed to stdout (recommended; -B = bcrypt, -n = no file, -b = password on CLI) htpasswd -Bbn admin 's3cret' # → admin:$2y$10$N9qo8uLOickgx2ZMRZoMye... # apr1 (Apache MD5) entry, portable for nginx — no apache2-utils needed printf "admin:$(openssl passwd -apr1 's3cret')\n" # → admin:$apr1$k3l4Hj9.$qN8... # Append a user to an existing file from the shell htpasswd -B /etc/apache2/.htpasswd alice # Note: nginx delegates bcrypt to the system crypt(); on Alpine/musl or old # glibc that fails — prefer apr1 for nginx to stay portable.
Recursos Principais
Multiplos Algoritmos de Hash
Gere entradas bcrypt ($2y$), apr1 / Apache MD5 ($apr1$) e SHA-1 ({SHA}) — alem de uma opcao plain (texto claro) para testes. Cada uma usa um salt criptografico fresco onde o formato suporta.
Gerar e Verificar
Crie novas entradas ou verifique existentes. Cole uma linha usuario:hash armazenada e uma senha candidata para confirmar instantaneamente se elas conferem — util para depurar um 401 em producao.
Escolha por Servidor
Selecione Apache, nginx, Docker ou Caddy e o algoritmo correto e selecionado automaticamente — bcrypt onde e suportado, apr1 para portabilidade com nginx — evitando falhas silenciosas do crypt().
Blocos de Configuracao Prontos para Colar
Obtenha seis snippets de configuracao prontos — Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy e Traefik — ja conectados a sua entrada .htpasswd gerada.
100% no Lado do Cliente
Todo o hashing ocorre localmente no seu navegador via Web Crypto e uma implementacao bcrypt integrada. Nenhum nome de usuario, senha ou hash e enviado ao servidor, portanto voce pode gerar credenciais de producao com privacidade.
Exemplos
Entrada bcrypt (recomendada)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Uma entrada bcrypt com prefixo $2y$ e custo 10. Este e o formato mais forte e portatil — use para Apache, Docker Registry, Caddy e Traefik.
Entrada apr1 (nginx portatil)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
Apache MD5 (apr1) com um salt de 8 caracteres apos o marcador $apr1$. O padrao seguro para nginx, onde a verificacao bcrypt depende de um crypt() do sistema nao confivel.
Entrada SHA-1 (legado)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= Uma entrada {SHA} e o base64 de um digest SHA-1 sem salt. Apache e nginx a aceitam, mas e sem salt e insegura — incluida apenas para compatibilidade com sistemas legados.
Cabecalho Authorization: Basic
Authorization: Basic YWRtaW46czNjcmV0
A credencial do lado do cliente para o mesmo usuario: base64('admin:s3cret'). Envie este cabecalho com curl -H ou Postman para autenticar sem precisar de um arquivo .htpasswd.
Arquivo .htpasswd com varios usuarios
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
Uma linha usuario:hash por usuario. Os algoritmos podem ser combinados no mesmo arquivo — aqui duas entradas bcrypt e uma entrada apr1 coexistem para tres usuarios.
Como Usar
- 1
Configure o Servidor e o Algoritmo
Escolha o servidor alvo (Apache, nginx, Docker, Caddy). O algoritmo correto e selecionado automaticamente — bcrypt para Apache/Docker/Caddy, apr1 para nginx portatil — mas voce pode substituir e ajustar o custo bcrypt.
- 2
Gere o Hash
Informe um nome de usuario e uma senha (ou clique em Senha aleatoria), depois clique em Gerar. O hash e calculado localmente com um salt aleatorio fresco. Rolar novamente o salt a qualquer momento gera uma nova entrada.
- 3
Copie a Entrada
Copie a linha usuario:hash para o seu arquivo .htpasswd, copie o comando echo >> para o terminal, ou copie o cabecalho Authorization: Basic para curl e Postman.
- 4
Implante a Configuracao
Cole o bloco de configuracao gerado no seu .htaccess do Apache, bloco de servidor nginx, Docker, ingress Kubernetes, Caddy ou configuracao do Traefik, aponte para o seu arquivo .htpasswd e recarregue o servidor.
Casos de Uso Comuns
- Protecao de Diretorio Apache
- Proteja uma pasta com HTTP Basic Auth usando um arquivo .htaccess e a diretiva AuthUserFile. Insira a entrada bcrypt e o bloco de configuracao Apache gerado para exigir login em qualquer caminho.
- nginx auth_basic
- Proteja um bloco de location ou servidor com auth_basic e auth_basic_user_file. Use o formato apr1 para que a verificacao funcione de forma confiavel em Alpine, Debian e outras imagens base.
- Docker Registry
- Um Docker Registry privado aceita apenas entradas htpasswd bcrypt. Gere uma linha $2y$ com htpasswd -Bbn, monte-a no container do registry e autentique com docker login.
- Kubernetes ingress-nginx
- Crie um Secret de autenticacao basica a partir do seu arquivo .htpasswd e referencie-o com as annotations nginx.ingress.kubernetes.io/auth-type e auth-secret para controlar uma rota ingress.
- Caddy e Traefik
- A diretiva basic_auth do Caddy e o middleware basicauth do Traefik esperam hashes bcrypt. Cole a entrada gerada diretamente no seu Caddyfile ou nas labels/configuracao dinamica do Traefik.
- Cabecalho de Autorizacao curl e Postman
- Ignore o arquivo completamente para testes rapidos: copie o cabecalho Authorization: Basic para enviar credenciais diretamente. Adicione-o a flag curl -H ou a uma requisicao Postman para acessar um endpoint protegido.
Detalhes Tecnicos
- bcrypt ($2y$)
- Um hash adaptativo com salt baseado na cifra Blowfish com fator de custo ajustavel. Cada entrada incorpora um salt aleatorio de 16 bytes e o custo, de modo que senhas identicas produzem hashes diferentes. Nota: bcrypt trunca a senha em 72 bytes — caracteres alem disso sao ignorados.
- apr1 (Apache MD5)
- Variante MD5 iterada e com salt do Apache ($apr1$ + salt de 8 caracteres). Executa 1.000 rodadas de MD5, o que e muito mais fraco que o custo adaptativo do bcrypt, mas e implementado nativamente pelo Apache e nginx, tornando-o o formato mais portatil entre plataformas e imagens base.
- SHA-1 e crypt
- Entradas SHA-1 ({SHA} + digest base64) sao sem salt, de modo que senhas identicas geram hashes identicos e sao vulneraveis a rainbow tables — incluidas apenas para compatibilidade com legado. O crypt tradicional (DES) e ainda mais fraco e trunca senhas silenciosamente em 8 caracteres.
- Salt e Iteracoes
- O salting previne ataques precomputados (rainbow tables) tornando cada hash unico. bcrypt usa um salt aleatorio de 128 bits com custo configuravel; apr1 usa um salt de 8 caracteres com 1.000 iteracoes fixas. Use Rolar novo salt para regenerar um hash valido diferente para a mesma senha.
- Manipulacao de Base64 e UTF-8
- As senhas sao codificadas como bytes UTF-8 antes do hashing, portanto caracteres nao-ASCII sao tratados de forma consistente. O cabecalho Authorization: Basic e o base64 dos bytes UTF-8 brutos de usuario:senha, correspondendo ao que os servidores decodificam no lado receptor.
- Notas de Honestidade e Ressalvas
- Os hashes gerados sao calculados localmente e nunca verificados contra um servidor ativo. Entradas copiadas e arquivos .htpasswd baixados chegam a sua area de transferencia e disco na forma hash em texto claro — trate-os como segredos, restrinja permissoes de arquivo e limpe a area de transferencia apos colar em configuracoes de producao.
Boas Praticas
- Prefira bcrypt Onde for Suportado
- Use bcrypt ($2y$) para Apache, Docker, Caddy e Traefik — e com salt, adaptativo e muito mais forte que apr1 ou SHA-1. Reserve apr1 somente para nginx quando a dependencia do bcrypt no crypt() do sistema o torna nao confivel.
- Armazene o Arquivo Fora da Raiz Web
- Mantenha o .htpasswd fora de qualquer diretorio servido para que nunca possa ser baixado via HTTP. Defina chmod 640 e torne o proprietario o usuario do servidor web para que o servidor possa le-lo enquanto outras contas nao conseguem.
- Sempre Sirva com HTTPS
- O Basic Auth transmite credenciais como base64 reversivel em cada requisicao. Sem TLS, qualquer pessoa no caminho da rede pode ler a senha. Nunca habilite o Basic Auth em HTTP puro — termine o TLS antes do endpoint protegido.
- Use Senhas Unicas e Fortes
- Cada conta deve ter sua propria senha de alta entropia, nunca reutilizada entre servicos. Gere uma com nosso Gerador de Senhas Aleatorias e armazene-a em um gerenciador de senhas em vez de criala manualmente.
Perguntas Frequentes
bcrypt vs apr1 — qual devo escolher?
O nginx suporta bcrypt?
Como corrijo o erro do nginx `crypt_r() failed (22: Invalid argument)`?
Onde devo colocar o arquivo .htpasswd e quais permissoes?
Como configuro o Basic Auth em .htaccess / nginx?
As minhas senhas sao enviadas para algum lugar?
Qual a diferenca entre $2a$, $2b$ e $2y$ no bcrypt?
Qual custo bcrypt devo usar?
htpasswd vs cabecalho Authorization: Basic — qual a diferenca?
Nao tenho o apache2-utils instalado — como gero uma entrada htpasswd?
O que significam os flags htpasswd -B, -Bbn, -bnB?
Por que o Docker Registry exige bcrypt?
O Basic Auth e seguro?
Ferramentas relacionadas
Ver todas as ferramentas →Gerador e Construtor de Comandos cURL
Web & API
Monte comandos curl no navegador — defina método, cabeçalhos, autenticação e corpo, obtenha um comando pronto para copiar instantaneamente. Presets para Bearer, POST JSON e upload. Grátis, privado, sem cadastro.
Conversor de Base Numérica — Binário, Hex, Decimal e Octal
Ferramentas de Conversão
Converta números entre binário, hexadecimal, decimal, octal e qualquer base personalizada (2-36) instantaneamente. Gratuito, privado, sem cadastro — todo o processamento acontece no seu navegador.
Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Conversor de Maiúsculas — UPPER, lower, camelCase
Processamento de Texto
Converta texto entre UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE e mais 6 formatos instantaneamente. Grátis, no navegador, sem cadastro.
Conversor de Cores — HEX, RGB, HSL e OKLCH
Ferramentas de Conversão
Converta HEX para RGB, HSL, OKLCH, OKLAB e CMYK no seu navegador — copie qualquer formato com um clique. Grátis, sem cadastro, suas cores nunca saem da página.
Gerador Crontab e Construtor de Expressão Cron
Data e Hora
Crie, valide e decodifique expressões cron no navegador. Pré-visualização ao vivo da próxima execução em horário local ou UTC. Sintaxe POSIX de 5 campos, presets, descrição em linguagem clara. Grátis, privado, sem cadastro.