Skip to content

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.

Sem rastreamento Roda no navegador Grátis
100% no seu navegador — senhas nunca saem do seu dispositivo.
Servidor
custo bcrypt: 12
entrada htpasswd
Cabecalho de autorizacao
 
Verificar hash existente
Revisado para corretude de hash e conformidade com os padroes Basic Auth — Equipe de Engenharia Go Tools · Jun 4, 2026

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. 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. 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. 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. 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?
Use bcrypt para Apache, Docker Registry, Caddy e Traefik — e um hash forte, com salt e adaptativo, e o padrao moderno. Use apr1 (Apache MD5) para nginx, pois o nginx repassa o bcrypt ao crypt() do sistema e isso falha em muitas versoes, enquanto o apr1 e implementado internamente e funciona em qualquer lugar. Se voce controla o runtime e sabe que o bcrypt e suportado, bcrypt e sempre a escolha mais forte; apr1 e sobre portabilidade, nao sobre seguranca.
O nginx suporta bcrypt?
Apenas indiretamente e de forma nao confivel. O nginx nao faz o hash das senhas por conta propria — para entradas $2y$ ele delega a verificacao a funcao crypt() da biblioteca C, portanto o suporte depende inteiramente da sua libc. O musl do Alpine e versoes mais antigas do glibc nao incluem o esquema blowfish (bcrypt), entao a autenticacao falha silenciosamente. Para configuracoes nginx portateis, use o formato apr1, que o nginx verifica internamente em qualquer plataforma.
Como corrijo o erro do nginx `crypt_r() failed (22: Invalid argument)`?
Esse erro significa que o nginx tentou verificar um hash bcrypt ($2y$) em uma libc que nao suporta o esquema blowfish — tipicamente Alpine/musl ou um glibc mais antigo. A correcao e regenerar a entrada como apr1 (Apache MD5) em vez de bcrypt, que o nginx verifica internamente em qualquer plataforma. Como alternativa, mude para uma imagem base cuja libc inclua suporte a bcrypt, mas apr1 e a solucao mais simples e portatil.
Onde devo colocar o arquivo .htpasswd e quais permissoes?
Armazene o arquivo .htpasswd fora da raiz do documento web para que nunca seja servido como arquivo estatico e exposto. Um local comum e /etc/apache2/.htpasswd ou /etc/nginx/.htpasswd. Defina permissoes 640 (chmod 640) e torne o proprietario o usuario com que o servidor web e executado (por exemplo www-data ou nginx), para que o servidor possa le-lo mas outras contas nao.
Como configuro o Basic Auth em .htaccess / nginx?
Para Apache, esta ferramenta gera um bloco .htaccess com AuthType Basic, AuthName, AuthUserFile apontando para o caminho do seu .htpasswd e Require valid-user. Para nginx, gera um bloco de location com auth_basic "Restricted"; e auth_basic_user_file /caminho/.htpasswd;. Copie o bloco de configuracao que corresponde ao seu servidor, ajuste o caminho do arquivo e recarregue — os snippets estao prontos para colar.
As minhas senhas sao enviadas para algum lugar?
Nao. Cada hash e calculado inteiramente no seu navegador usando JavaScript — nenhum nome de usuario, senha ou hash gerado e enviado pela rede. Voce pode confirmar isso abrindo o DevTools do navegador (F12 → aba Rede) durante a geracao: ha zero requisicoes de saida. Nada e armazenado ou registrado em nenhum servidor, portanto e seguro gerar credenciais de producao reais aqui.
Qual a diferenca entre $2a$, $2b$ e $2y$ no bcrypt?
Sao prefixos de versao para o mesmo algoritmo bcrypt e produzem hashes equivalentes; as diferencas remontam a correcoes historicas de bugs na forma como certas implementacoes tratavam caracteres de alto bit e comprimento de string. O htpasswd do Apache emite $2y$. As bibliotecas bcrypt modernas tratam $2a$, $2b$ e $2y$ como intercambiaveis para verificacao, portanto uma entrada $2y$ gerada aqui sera validada corretamente no Apache, Caddy, Traefik e Docker Registry.
Qual custo bcrypt devo usar?
Custo 12 e o padrao moderno e um bom equilibrio entre seguranca e velocidade. O custo e um fator de trabalho: cada incremento dobra o tempo de calculo e verificacao do hash, o que desacelera ataques de forca bruta mas tambem adiciona latencia a cada login. Custo 10 e aceitavel para endpoints de baixo trafego ou baixo risco; 12 a 14 e recomendado para qualquer coisa sensivel. Evite subir tanto que a autenticacao legitima se torne visivelmente lenta.
htpasswd vs cabecalho Authorization: Basic — qual a diferenca?
Eles ficam em extremos opostos do mesmo intercambio. O arquivo .htpasswd contem o hash armazenado no servidor — um digest unidirecional que o servidor usa para verificar as credenciais. O cabecalho Authorization: Basic e a credencial do lado do cliente: o base64 literal de usuario:senha que o navegador ou curl envia em cada requisicao. O servidor decodifica o cabecalho em base64 e verifica a senha contra o hash armazenado. Um e armazenamento, o outro e transporte.
Nao tenho o apache2-utils instalado — como gero uma entrada htpasswd?
Voce nao precisa dele — esta ferramenta gera entradas bcrypt, apr1 e SHA-1 validas inteiramente no seu navegador. Se preferir a linha de comando, o OpenSSL esta disponivel em quase todos os sistemas: execute openssl passwd -apr1 para produzir um hash apr1, depois prefixe com usuario: para formar a linha. No Debian/Ubuntu voce tambem pode instalar o binario htpasswd via apt install apache2-utils, ou httpd-tools no RHEL/CentOS.
O que significam os flags htpasswd -B, -Bbn, -bnB?
Cada letra e um flag independente: -B seleciona bcrypt, -n imprime o resultado na saida padrao em vez de escrever em arquivo, e -b aceita a senha como argumento de linha de comando (em vez de solicitacao interativa). A ordem nao importa, portanto -Bbn e -bnB sao identicos. -Bbn e a combinacao comum para redirecionar uma entrada bcrypt para um arquivo htpasswd do Docker Registry.
Por que o Docker Registry exige bcrypt?
O backend de autenticacao htpasswd do Docker Registry aceita apenas entradas no formato bcrypt; hashes apr1, SHA-1 e crypt sao rejeitados e o login falhara. Gere a entrada com htpasswd -Bbn usuario senha (ou use a opcao bcrypt aqui), monte o arquivo no container do registry e aponte REGISTRY_AUTH_HTPASSWD_PATH para ele. Sempre combine isso com TLS, pois as credenciais Basic Auth podem ser lidas em transito sem ele.
O Basic Auth e seguro?
Apenas com HTTPS. O HTTP Basic Auth envia as credenciais como base64(usuario:senha) em cada requisicao, e base64 e codificacao reversivel — nao criptografia — portanto qualquer um que possa ler o trafego pode recuperar a senha instantaneamente. Sobre TLS o cabecalho e criptografado em transito e o Basic Auth e aceitavel para controle de acesso simples. Nunca use em HTTP puro, e prefira esquemas mais fortes para aplicacoes de alto valor.

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.