Pular para o conteúdo
nearnull

Gerador de Senhas

Gere senhas aleatórias fortes com suas próprias regras de comprimento e caracteres, e veja a entropia delas. Funciona totalmente no seu navegador: nada é enviado a nenhum servidor.

Opções
Tipos de caracteres

Deixa de fora 0, O, 1, l e I, fáceis de confundir.

Senhas
Excelente 130 bits de entropia · 90 caracteres possíveis

Selecione pelo menos um tipo de caractere

Como este gerador funciona

Cada caractere vem do gerador de números aleatórios criptográfico do seu navegador, a mesma fonte usada para chaves TLS, e não do Math.random. Sorteios que cairiam fora de um múltiplo inteiro do tamanho do alfabeto são descartados e refeitos, então nenhum caractere é nem um pouco mais provável que outro: um viés sutil aqui é o que torna mais adivinháveis senhas que de outra forma seriam longas. Nada é gerado em um servidor, nada é registrado e nada é enviado a lugar nenhum. Recarregue a página e as senhas que você viu somem para sempre.

Quanta entropia é suficiente?

A entropia mede quantas tentativas um atacante precisa, em média, expressa em bits: cada bit extra dobra esse número. Depende apenas do comprimento e do tamanho do conjunto de caracteres, nunca de a senha 'parecer' aleatória.

< 40 bits

Adivinhável por um ataque offline em minutos. Não serve para nada.

40 - 59 bits

Aguenta ataques casuais, não um banco de senhas vazado.

60 - 79 bits

Um alvo razoável para uma conta que importa.

80+ bits

Fora do alcance da força bruta com o hardware atual e o previsível.

O número mostrado por esta ferramenta é um limite superior: com 'pelo menos um de cada tipo' ativado, os caracteres garantidos restringem um pouco o espaço. A diferença é uma fração de bit em comprimentos normais, e a opção vale a pena quando um site impõe regras de composição.

Exemplos

Gerar uma senha corretamente em código significa usar a fonte aleatória criptográfica, não a de uso geral:

JavaScript
const bytes = new Uint32Array(1);
crypto.getRandomValues(bytes);
// reject and redraw above the largest multiple of the alphabet size
Python
import secrets, string

alphabet = string.ascii_letters + string.digits
"".join(secrets.choice(alphabet) for _ in range(20))
Java
SecureRandom random = new SecureRandom();
int index = random.nextInt(alphabet.length());
Go
import "crypto/rand"

n, _ := rand.Int(rand.Reader, big.NewInt(int64(len(alphabet))))
PHP
$index = random_int(0, strlen($alphabet) - 1);
Shell
LC_ALL=C tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 20

Casos de uso

Contas de serviço e credenciais de API

Credenciais entre máquinas nunca são digitadas por uma pessoa, então não há razão para serem curtas ou memorizáveis. Gere a string mais longa que o outro sistema aceitar e guarde em um gerenciador de segredos.

Senhas de banco de dados e de administração

Gere sem símbolos quando a senha tiver que sobreviver a uma connection string, um arquivo YAML ou um comando de shell, onde as regras de aspas podem quebrá-la.

Wi-Fi e frases compartilhadas

Ative 'excluir caracteres ambíguos' para qualquer coisa que alguém vá ler de uma tela ou de um cartão impresso. Uma senha que não pode ser transcrita corretamente acaba sendo trocada por outra mais fraca.

Preencher entradas em um gerenciador de senhas

Gere um lote, use uma, e deixe o resto desaparecer ao fechar a aba. Útil quando você está criando várias contas de uma vez.

Perguntas frequentes

Estas senhas são enviadas para um servidor?
Não. Elas são geradas no seu navegador pelo JavaScript desta página, usando o gerador de números aleatórios integrado do Web Crypto. Este site é estático: não existe backend que possa recebê-las, e também nada é guardado no seu navegador.
Qual deve ser o comprimento de uma senha?
Com os quatro tipos de caracteres ativados, 16 caracteres dão cerca de 105 bits de entropia, confortavelmente fora do alcance da força bruta. Abaixo de 12 caracteres você começa a depender de o atacante não ter uma cópia offline rápida do hash. Se um site permitir mais, ser mais longa não custa nada quando quem digita é um gerenciador de senhas.
Uma senha aleatória é melhor que uma frase?
Para tudo que um gerenciador de senhas preenche, sim: é mais curta para a mesma entropia. Para o punhado de senhas que você precisa digitar de memória, como o login do seu dispositivo ou a senha mestra do gerenciador, uma frase de várias palavras aleatórias é bem mais fácil de lembrar com força comparável.
Por que aspas e barras invertidas ficam de fora dos símbolos?
Porque são justamente as que quebram uma senha depois que você já a salvou. Uma aspa ou barra invertida colada em um comando de shell, uma connection string, um arquivo YAML ou uma importação de CSV é interpretada em vez de armazenada. Deixá-las de fora custa cerca de meio bit por caractere e elimina toda uma classe de falhas.
'Pelo menos um de cada tipo' enfraquece a senha?
Muito levemente, porque descarta as combinações que por acaso omitem um tipo. Com 16 caracteres a diferença fica bem abaixo de um bit, o que não é nada perto do benefício de passar nas regras de composição de primeira. A entropia mostrada é a cifra sem restrição, portanto um limite superior.
Posso obter a mesma senha duas vezes?
Só por acaso, e com qualquer comprimento razoável esse acaso é desprezível: nada é guardado ou reutilizado entre gerações. Cada caractere de cada senha é um sorteio novo.