Gerador de senha forte e segura
O gerador de senha cria senhas aleatórias com o tamanho e os tipos de caractere que você escolher, usando o gerador criptográfico do navegador. A senha é criada no seu dispositivo e não é enviada nem armazenada em nenhum lugar.
••••••••••••••••
A senha é criada no seu navegador e não é enviada nem armazenada. Guarde-a em um gerenciador de senhas.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Ajuste o tamanho da senha com o controle deslizante.
- Marque os tipos de caractere: minúsculas, maiúsculas, números e símbolos.
- Clique em Gerar outra e depois em Copiar. Salve a senha em um gerenciador de senhas.
Como funciona
Cada caractere é sorteado com o gerador criptográfico do navegador, sem viés entre os caracteres disponíveis. A ferramenta garante ao menos um caractere de cada tipo marcado e embaralha as posições.
A força de uma senha aleatória depende do tamanho e da variedade de caracteres. A entropia, em bits, é o tamanho multiplicado pelo logaritmo de base 2 do número de caracteres possíveis.
A ferramenta mostra essa estimativa. Ela vale para senhas sorteadas assim e não serve para avaliar senhas escolhidas por uma pessoa, que costumam ser mais previsíveis.
Exemplo de cálculo
Senha de 16 caracteres, com 94 caracteres possíveis
Entropia: 16 × log₂(94) ≈ 105 bits
Classificação da ferramenta: muito forte (80 bits ou mais)
Em código
Para gerar senhas em código, use o gerador aleatório criptográfico da linguagem, nunca Math.random, e sorteie sem viés entre os caracteres.
const ALFABETO = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz' +
'0123456789!@#$%&*-_';
function gerarSenha(tamanho = 16, alfabeto = ALFABETO) {
// Descarta bytes acima do maior múltiplo do tamanho do alfabeto: sem isso, os
// primeiros caracteres sairiam mais vezes (o viés do módulo)
const limite = 256 - (256 % alfabeto.length);
let senha = '';
while (senha.length < tamanho) {
// getRandomValues aceita no máximo 65536 bytes por chamada
const bytes = crypto.getRandomValues(new Uint8Array(Math.min(tamanho * 2, 65536)));
for (const b of bytes) {
if (b < limite && senha.length < tamanho) {
senha += alfabeto[b % alfabeto.length];
}
}
}
return senha;
} Descarta os bytes que causariam viés do módulo.
import secrets
ALFABETO = (
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789!@#$%&*-_"
)
def gerar_senha(tamanho: int = 16, alfabeto: str = ALFABETO) -> str:
# secrets.choice usa o gerador seguro do sistema e sorteia sem viés
return "".join(secrets.choice(alfabeto) for _ in range(tamanho)) <?php
const ALFABETO = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .
'abcdefghijklmnopqrstuvwxyz' .
'0123456789!@#$%&*-_';
function gerarSenha(int $tamanho = 16, string $alfabeto = ALFABETO): string
{
$senha = '';
$max = strlen($alfabeto) - 1;
for ($i = 0; $i < $tamanho; $i++) {
$senha .= $alfabeto[random_int(0, $max)]; // random_int é seguro e sem viés
}
return $senha;
} Perguntas frequentes
Qual o tamanho ideal de uma senha?
Para contas comuns, 14 a 16 caracteres aleatórios já são um bom ponto de partida. Quanto mais longa, mais forte, e um gerenciador de senhas evita ter que decorar.
A senha gerada é guardada em algum lugar?
Não. Ela é criada no seu navegador e desaparece quando você fecha ou recarrega a página. Guarde-a em um gerenciador de senhas.
Devo incluir símbolos?
Símbolos ampliam as combinações possíveis, mas o tamanho pesa mais. Alguns sites recusam certos símbolos; nesse caso, desmarque-os e aumente o tamanho.
O que faz a opção de evitar caracteres ambíguos?
Remove caracteres que se confundem visualmente, como O, 0, o, I, l e 1. É útil quando a senha precisa ser digitada à mão ou lida em voz alta.
Guias sobre este assunto
- Variáveis de ambiente e segredos: como usar o .env sem vazar senhasComo usar variáveis de ambiente e o arquivo .env em Node.js, Python e PHP, por que prefixos como VITE_ e NEXT_PUBLIC_ expõem segredos e o que fazer se um vazar.
- Como guardar senhas: por que não usar SHA-256 e o que usarPor que MD5 e SHA-256 não servem para senhas e como guardar senhas com scrypt, bcrypt ou Argon2 em Node.js, Python e PHP, com sal e código testado.
- Como gerar senha segura em código (sem Math.random)Por que Math.random não serve para senhas, como evitar o viés do módulo e como gerar senhas seguras em JavaScript, Python e PHP, com código testado.
Outras ferramentas que podem ajudar
- Gerador de UUIDGere UUID v4 aleatório com um clique: em lote, em maiúsculas, com ou sem hífens
- Codificar Base64Converta texto para Base64 online, com suporte a acentos (UTF-8) e opção URL-safe
- Gerador de CPFGere CPF válido para testar sistemas e formulários
- Decodificar Base64Decodifique Base64 para texto online, com suporte a UTF-8 e Base64 URL-safe
- Decodificador JWTDecodifique um JWT online e veja header, payload e datas de exp, iat e nbf
- Base64 de ArquivoConverta imagem, PDF ou qualquer arquivo para Base64 ou data URI online, e Base64 de volta para arquivo