Gerador de Senhas

Gere senhas aleatórias fortes com comprimento e conjuntos de caracteres personalizáveis

Comprimento20
Quantidade5

O que é um Gerador de Senhas?

Um gerador de senhas cria sequências aleatórias de caracteres utilizadas como senhas para contas de usuários, API keys, credenciais de banco de dados e segredos de criptografia. Ao contrário de senhas escolhidas por humanos, as senhas geradas exploram todo o espaço de combinações possíveis de caracteres, tornando-as resistentes a ataques de dicionário e adivinhação baseada em padrões. Esta ferramenta gera senhas aleatórias fortes online usando o gerador de números aleatórios criptográfico integrado ao seu navegador.

A força de uma senha depende de dois fatores: comprimento e diversidade de caracteres. Uma senha de 20 caracteres com maiúsculas, minúsculas, dígitos e símbolos possui aproximadamente 131 bits de entropia. Nesse nível, um ataque de força bruta testando um trilhão de tentativas por segundo levaria mais tempo do que a idade do universo para tentar todas as combinações. A matemática é direta: entropia = comprimento x log2(tamanho do conjunto de caracteres).

Padrões como o NIST SP 800-63B recomendam senhas de pelo menos 8 caracteres sem limite superior imposto pelo verificador, e desencorajam regras de composição forçadas — como exigir exatamente um símbolo — favorecendo frases de acesso mais longas. Para credenciais máquina a máquina e contas de serviço, 20 ou mais caracteres aleatórios extraídos de um conjunto completo de caracteres é o padrão aceito na maioria dos frameworks de segurança e regimes de conformidade.

Por que usar um Gerador de Senhas?

Humanos são péssimos geradores de números aleatórios. Reutilizamos senhas, escolhemos palavras do dicionário, substituímos letras com padrões previsíveis (@ por a, 3 por e) e tendemos a usar sequências curtas. Um gerador de senhas elimina o viés humano do processo.

🔐
Geração com privacidade em primeiro lugar
As senhas são geradas inteiramente no seu navegador usando a Web Crypto API. Nenhum caractere sai do seu dispositivo, nada é registrado e nenhuma requisição de rede é feita durante a geração.
Saída em lote instantânea
Gere até 20 senhas de uma vez com um único clique. Copie senhas individualmente ou todas de uma vez para scripts de provisionamento ou cofres de credenciais.
🛡️
Sem conta necessária
Sem cadastro, sem e-mail, sem cookies rastreando suas senhas geradas. Abra a página, configure suas opções e gere.
🎛️
Controle total do conjunto de caracteres
Ative ou desative maiúsculas, minúsculas, dígitos e símbolos de forma independente. Defina o comprimento de 4 a 128 caracteres para atender aos requisitos de qualquer sistema ou política.

Casos de Uso do Gerador de Senhas

Desenvolvimento Frontend
Gere senhas de teste para validação de formulários, testes de comprimento de campos e desenvolvimento de fluxos de autenticação. Verifique se seus formulários de login lidam corretamente com senhas de 128 caracteres e caracteres especiais.
Backend & DevOps
Crie credenciais de banco de dados, tokens de API e senhas de contas de serviço durante a configuração de infraestrutura. Use a geração em lote para provisionar múltiplos serviços em uma única sessão.
Engenharia de Segurança
Gere segredos de alta entropia para chaves de criptografia, assinatura HMAC e rotação de segredos JWT. Defina o comprimento para 64 ou mais caracteres para segredos que precisam superar 256 bits de entropia.
QA & Testes de Penetração
Teste a aplicação de políticas de senha gerando sequências que incluem ou excluem conjuntos específicos de caracteres. Verifique se os sistemas rejeitam corretamente senhas abaixo do comprimento mínimo ou da complexidade exigida.
Engenharia de Dados
Gere credenciais aleatórias para ambientes de teste, bancos de dados de staging e segredos de pipelines de CI/CD. Evite reutilizar senhas de produção em dados de teste gerando novas por ambiente.
Segurança de Contas Pessoais
Crie senhas únicas para cada conta online. Use este gerador junto com um gerenciador de senhas para armazenar credenciais que você não precisa memorizar.

Referência de Entropia de Senhas

A entropia mede o quanto uma senha é imprevisível. É calculada como log2(charset_size ^ length). Maior entropia significa mais combinações possíveis para um atacante percorrer. NIST e OWASP recomendam pelo menos 80 bits de entropia para aplicações de alta segurança.

ComprimentoConjunto de CaracteresEntropiaTempo de Força Bruta
8lower + digits~41 bitsMinutes to hours
12lower + upper + digits~71 bitsCenturies (offline)
16all character sets~105 bitsBeyond brute-force
20all character sets~131 bitsBeyond brute-force
32all character sets~210 bitsBeyond brute-force
64all character sets~419 bitsBeyond brute-force

Os tempos de quebra assumem 1 trilhão de tentativas por segundo (ataque offline com GPUs modernas). Ataques online com limitação de taxa são ordens de magnitude mais lentos.

CSPRNG vs Math.random() para Geração de Senhas

A fonte de aleatoriedade importa tanto quanto o comprimento da senha. Uma senha gerada com um gerador de números aleatórios previsível pode ser reconstruída por um atacante que conhece o algoritmo e o estado da semente. Esta ferramenta usa crypto.getRandomValues(), que é um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG) integrado a todos os navegadores modernos.

crypto.getRandomValues()
Usa fontes de entropia do sistema operacional (RNG de hardware, temporização de interrupções, etc.). A saída é imprevisível mesmo que um atacante conheça todas as saídas anteriores. Exigido pela especificação W3C Web Crypto para operações sensíveis à segurança.
Math.random()
Usa um algoritmo determinístico alimentado por um conjunto de entropia limitado. A saída pode ser prevista se o estado da semente for conhecido. A especificação ECMAScript afirma explicitamente que Math.random() não fornece números aleatórios criptograficamente seguros. Nunca o use para geração de senhas.

Exemplos de Código

Gere senhas programaticamente em diferentes linguagens. Cada exemplo abaixo usa uma fonte de aleatoriedade criptograficamente segura, não Math.random() ou PRNGs fracos equivalentes.

JavaScript (Web Crypto API)
// Generate a random password in the browser or Node.js 19+
function generatePassword(length = 20) {
  const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*'
  const values = new Uint32Array(length)
  crypto.getRandomValues(values)
  return Array.from(values, v => charset[v % charset.length]).join('')
}

console.log(generatePassword())    // → "kR7!mZp$Xw2&nLq9@Yf3"
console.log(generatePassword(32))  // → "Hd4%tNx!Qw8#mKp2Rv6&Zj0*Ls3Yb7@"
Python
import secrets
import string

def generate_password(length: int = 20) -> str:
    """Generate a cryptographically secure random password."""
    alphabet = string.ascii_letters + string.digits + string.punctuation
    return ''.join(secrets.choice(alphabet) for _ in range(length))

# Single password
print(generate_password())      # → "kR7!mZp$Xw2&nLq9@Yf3"

# Batch of 5 passwords
for _ in range(5):
    print(generate_password(24))

# Ensure at least one char from each category
def generate_strong(length: int = 20) -> str:
    required = [
        secrets.choice(string.ascii_uppercase),
        secrets.choice(string.ascii_lowercase),
        secrets.choice(string.digits),
        secrets.choice(string.punctuation),
    ]
    remaining = length - len(required)
    alphabet = string.ascii_letters + string.digits + string.punctuation
    all_chars = required + [secrets.choice(alphabet) for _ in range(remaining)]
    secrets.SystemRandom().shuffle(all_chars)
    return ''.join(all_chars)
CLI (OpenSSL / /dev/urandom)
# OpenSSL — generate 32 random bytes, base64-encode
openssl rand -base64 32
# → "x7Kp2mNqR4wZ8vLs1Yb0Hd6tFj3Xc9Ga5eUi+Wo="

# /dev/urandom with tr — alphanumeric + symbols, 20 chars
tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 20; echo
# → "kR7!mZp$Xw2&nLq9@Yf3"

# pwgen (install: apt install pwgen / brew install pwgen)
pwgen -sy 20 5
# Generates 5 passwords, 20 chars each, with symbols
Go
package main

import (
    "crypto/rand"
    "fmt"
    "math/big"
)

func generatePassword(length int) (string, error) {
    charset := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"
    result := make([]byte, length)
    for i := range result {
        idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
        if err != nil {
            return "", err
        }
        result[i] = charset[idx.Int64()]
    }
    return string(result), nil
}

func main() {
    pwd, _ := generatePassword(20)
    fmt.Println(pwd) // → "kR7!mZp$Xw2&nLq9@Yf3"
}

Perguntas Frequentes

Qual deve ser o comprimento de uma senha?
Para contas de usuários, 16 caracteres de um conjunto misto fornece mais de 100 bits de entropia, suficiente para todos os modelos de ameaça atuais. Para segredos de máquina (API keys, chaves de criptografia), use 32 caracteres ou mais. O NIST SP 800-63B define um mínimo de 8 caracteres, mas recomenda que os sistemas permitam senhas muito mais longas sem truncamento.
Este gerador de senhas é seguro?
Sim. As senhas são geradas no seu navegador usando a Web Crypto API (crypto.getRandomValues). Nenhum dado é enviado a nenhum servidor. Você pode verificar isso abrindo a aba de rede do seu navegador e observando que nenhuma requisição é feita ao clicar em Gerar. O código-fonte é JavaScript do lado do cliente, visível nas ferramentas de desenvolvedor do seu navegador.
O que é entropia de senha?
Entropia é uma medida de aleatoriedade expressa em bits. Uma senha com N bits de entropia tem 2^N valores possíveis. Por exemplo, uma senha de 20 caracteres extraída de 95 caracteres ASCII imprimíveis tem log2(95^20) = 131,1 bits de entropia. Cada bit adicional dobra o número de tentativas que um atacante precisa fazer.
Devo incluir símbolos nas minhas senhas?
Incluir símbolos aumenta o conjunto de caracteres de 62 (letras + dígitos) para 95 (ASCII imprimível), o que adiciona cerca de 6,1 bits de entropia por caractere. Alguns sistemas restringem quais símbolos são permitidos. Se um sistema rejeitar certos símbolos, desative a opção de símbolos e compense com uma senha mais longa. Uma senha alfanumérica de 24 caracteres tem mais entropia do que uma senha de 16 caracteres com símbolos.
Por que não usar Math.random() para gerar senhas?
Math.random() não é criptograficamente seguro. A maioria dos motores JavaScript o implementa com xorshift128+ ou um PRNG rápido semelhante, projetado para simulações e jogos, não para segurança. Um atacante que observa algumas saídas pode recuperar o estado interno e prever todas as saídas futuras. A Web Crypto API usa fontes de entropia do sistema operacional que não são previsíveis.
Posso usar senhas geradas para API keys e tokens?
Sim, mas considere os requisitos de formato do seu sistema alvo. Algumas APIs esperam chaves codificadas em base64 ou strings hexadecimais em vez de caracteres arbitrários. Para geração de segredos brutos, use o conjunto completo de caracteres com 32 ou mais caracteres. Para chaves base64, gere bytes aleatórios e os codifique separadamente em vez de tratar o base64 como um conjunto de caracteres de senha.
Com que frequência devo rotacionar senhas?
O NIST SP 800-63B (2017, atualizado em 2024) recomenda contra a rotação periódica forçada de senhas de usuários porque isso leva a escolhas de senhas mais fracas. Rotacione apenas quando houver evidência de comprometimento. Para segredos de máquina e contas de serviço, rotacione com base no modelo de risco da sua organização, tipicamente a cada 90 dias para credenciais de alto privilégio.