Gerador de senha forte
Senhas sorteadas no seu navegador, com sorteio criptográfico de verdade e sem viés de módulo — e, em vez de uma barrinha colorida, a entropia em bits e a conta que a produz. Nada é enviado a lugar nenhum.
A senha e a conta por trás dela
O que foi sorteado
- A entropia acima só vale porque a senha foi SORTEADA. Uma senha escolhida por gente não tem entropia calculável desse jeito — "Brasil@2026" tem 11 caracteres e cai em qualquer lista de ataque.
Por que bits, e não uma barrinha colorida
A barra de "senha forte" que quase todo site mostra costuma contar regrinhas —
tem maiúscula, tem número, passou de oito — e por isso dá verde para
Senha@2026, que está em qualquer lista de ataque. A entropia mede
outra coisa: quantos palpites separam o atacante da sua senha. Cada bit
a mais dobra esse número.
E ela só vale porque a senha foi sorteada. Não existe jeito honesto de calcular a entropia de uma senha que uma pessoa inventou — o que se pode dizer dessa é se ela já apareceu em algum vazamento.
As senhas, prontas para copiar
GbM9X=CF_L@2MijIKvQb
Uma senha por linha. A cópia usa a área de transferência do seu navegador — lembre-se de que outros programas podem lê-la.
Como melhorar esta calculadora?
Faltou uma verba, o número saiu diferente do seu contracheque ou alguma palavra ficou confusa? Escreva. Quem lê é a pessoa que mantém o site, e é daí que sai a próxima versão desta página.
Abre seu programa de e-mail com o assunto e a página já preenchidos, e com as perguntas que ajudam a entender o caso. Sem formulário, sem cadastro, sem cookie.
publicidade
Como a força é medida
A conta é curta: entropia = comprimento × log₂(tamanho do alfabeto).
Com o alfabeto completo desta página, de 75 caracteres, cada
caractere sorteado acrescenta cerca de 6 bits.
Bits são um jeito compacto de falar de tamanho de busca: 40 bits são aproximadamente um trilhão de possibilidades; 80 bits são um trilhão de trilhões. Cada bit dobra o trabalho de quem tenta adivinhar.
| Entropia | Leitura |
|---|---|
| menos de 40 bits | Fraca — um computador comum percorre todas as combinações em horas |
| de 40 a menos de 60 bits | Razoável — resiste a palpite casual, mas não a quem tem uma placa de vídeo e tempo |
| de 60 a menos de 80 bits | Forte — fora do alcance de ataque doméstico contra um hash moderno |
| de 80 a menos de 100 bits | Muito forte — o custo de quebrar por força bruta deixa de compensar |
| 100 bits ou mais | Excessiva — além deste ponto o elo fraco é outro — vazamento, phishing, reuso |
Os cortes são ordens de grandeza de custo de ataque offline, não uma norma: não existe tabela oficial brasileira de força de senha, e a referência internacional mais usada (NIST SP 800-63B) foi na direção de abandonar regra de composição e olhar comprimento — que é o que esta página faz.
Quanto vale cada caractere a mais
É a tabela que explica por que "aumente o tamanho" vence "acrescente um símbolo". Todos os valores usam o alfabeto completo, de 75 caracteres:
| Caracteres | Entropia | Leitura |
|---|---|---|
| 8 | 50 bits | Razoável |
| 12 | 75 bits | Forte |
| 16 | 100 bits | Muito forte |
| 20 | 125 bits | Excessiva |
| 24 | 149 bits | Excessiva |
| 32 | 199 bits | Excessiva |
Repare que a diferença entre 8 e 12 caracteres é maior que qualquer regra de composição que um site possa exigir.
Por que nada sai do navegador
Esta página é um arquivo estático. Não há servidor recebendo formulário, não há
requisição de rede depois que ela carrega e não há como a senha viajar — o
sorteio é feito pelo próprio navegador, com crypto.getRandomValues.
Se quiser conferir, desconecte a internet e continue gerando.
Uma honestidade que quase nenhum gerador declara: a senha que aparece antes de o JavaScript rodar é pública. Ela é sorteada no momento em que o site é publicado, com semente fixa, para que a página funcione sem JavaScript e não pule ao carregar — e está, literalmente, no código-fonte deste site. Ela existe para você ver o formato do resultado. Assim que o JavaScript roda, a senha na tela é trocada por uma sorteada de verdade, no seu aparelho.
Código pronto, sem viés de módulo
O trecho abaixo é o mesmo sorteio que esta página usa. A parte que importa é o
while: ele descarta os bytes que sobram da divisão, em vez de
dobrá-los sobre o começo do alfabeto.
function sortearSenha(comprimento, alfabeto) {
const limite = alfabeto.length;
// Maior múltiplo de `limite` que cabe em 256. Bytes acima disso são descartados:
// é o que faz cada caractere ter exatamente a mesma chance.
const teto = 256 - (256 % limite);
const senha = [];
while (senha.length < comprimento) {
for (const byte of crypto.getRandomValues(new Uint8Array(32))) {
if (byte >= teto) continue; // <- sem isto, há viés
senha.push(alfabeto[byte % limite]);
if (senha.length === comprimento) break;
}
}
return senha.join('');
}
No Node, troque crypto.getRandomValues por
crypto.randomBytes(32). O que não muda em lugar nenhum é a regra:
nunca Math.random, e nunca % alfabeto.length
sem descartar o excedente.
O que importa mais que a senha
Passados uns 80 bits, o elo fraco deixa de ser a senha. O que quebra conta, na prática, é outra coisa:
- Reuso. A mesma senha em dois sites transforma o vazamento de um deles em invasão do outro. É de longe o problema mais comum, e entropia nenhuma resolve.
- Phishing. Uma senha de 128 bits digitada na página errada vale zero. Só a verificação em duas etapas ajuda aqui — de preferência por aplicativo ou chave física, não por SMS.
- Não usar um gerenciador. Senha sorteada é boa porque ninguém a decora; se você precisa decorá-la, vai acabar reusando ou simplificando.
Se o que você precisa é de números de documento para testar software, veja o Gerador de CPF e o Gerador de CNPJ. Os demais estão no hub de geradores.
Perguntas frequentes
Esta senha é enviada para algum servidor?
Não, e a página é estática justamente para poder prometer isso. O sorteio acontece no seu navegador, por crypto.getRandomValues, e a senha nunca entra numa requisição — não há para onde ela ir. Você pode conferir: desconecte a internet depois de a página carregar e o gerador continua funcionando.
O que é entropia e por que ela importa mais que "letra, número e símbolo"?
Entropia é quantos palpites, em média, um atacante precisa dar para acertar a senha por força bruta — medida em bits, onde cada bit dobra o trabalho. Ela depende de duas coisas: o tamanho do alfabeto e o comprimento. É por isso que exigir "uma maiúscula e um símbolo" resolve tão pouco: acrescentar quatro caracteres a uma senha sorteada vale muito mais que qualquer regra de composição, e é o que leva as pessoas a escolherem "Senha@1" — que cumpre a regra e não vale nada.
Quantos caracteres uma senha precisa ter?
Com o alfabeto completo desta página (75 caracteres), 12 já passam de 71 bits e 16 chegam perto de 95 — o suficiente para tornar a força bruta irrelevante contra um hash moderno. O padrão aqui é 20 porque não custa nada digitar uma senha que você vai guardar num gerenciador. Se for uma senha que você precisa decorar, o caminho é outro: uma frase longa de palavras aleatórias.
Por que o gerador não garante ao menos um número e um símbolo?
Porque garantir isso REDUZ a segurança, ainda que pareça o contrário. Forçar um caractere de cada tipo elimina do sorteio todas as senhas que não seguem esse padrão, e um espaço menor de senhas possíveis é exatamente o que um atacante quer. Se o site de destino exigir composição, gere de novo até sair uma que sirva, ou aumente o comprimento — nunca vale trapacear no sorteio.
Devo tirar os caracteres ambíguos?
Só se você for digitar a senha à mão a partir de outra tela ou de um papel. Remover l, I, 1, O, 0 evita a confusão entre ele e um, i maiúsculo e ele minúsculo, o e zero — e encolhe o alfabeto, o que baixa a entropia. A calculadora mostra a queda quando você marca a opção. Para senha que vive num gerenciador, deixe desmarcado.
Posso usar Math.random para gerar senha no meu código?
Não. Math.random é um gerador pseudoaleatório rápido e previsível: quem observa alguns valores de saída consegue reconstruir o estado interno e prever os próximos. Já houve caso real de carteira e de token de recuperação quebrados por isso. A função certa é crypto.getRandomValues no navegador e crypto.randomBytes no Node — e depois um sorteio sem viés de módulo, como a seção de código desta página mostra.
O que é viés de módulo?
É o defeito de sortear com resto de divisão. Um byte vai de 0 a 255, ou seja 256 valores; se o alfabeto tem 62 caracteres, 256 dividido por 62 dá 4 com resto 8 — então os 8 primeiros caracteres do alfabeto aparecem 5 vezes na conta e os outros 54 aparecem 4. O resultado é uma senha em que certos caracteres saem cerca de 1,6% mais que os demais e a entropia real é menor que a anunciada. Este gerador descarta os bytes excedentes em vez de dobrá-los.
Onde eu guardo essa senha?
Num gerenciador de senhas. Uma senha sorteada de 20 caracteres é boa exatamente porque ninguém a decora, e a alternativa — anotar num arquivo de texto ou reusar em vários sites — desfaz o ganho. Reuso é o que transforma o vazamento de um site qualquer em invasão do seu e-mail, e nenhuma quantidade de entropia protege contra isso.