Ferramenta de Validação e Geração de Senhas

Ferramenta profissional de geração e validação de senhas que cria senhas fortes e frases de acesso fáceis de lembrar, com suporte para geração em lote, garantia de unicidade, avaliação de força e validação de políticas. Recursos incluem fonte aleatória criptograficamente segura, conjuntos de caracteres configuráveis, filtragem de caracteres semelhantes, estatísticas de deduplicação em lote e funcionalidade de cópia com um clique. Inclui exemplos de código multilíngue, base de conhecimento de senhas, melhores práticas de segurança e ferramentas de teste de políticas. Todas as operações são realizadas localmente no seu navegador, garantindo privacidade e segurança.

Gerador de Senha

Selecionar grupos de símbolos
Dica: Exclua caracteres selecionando grupos ou clicando diretamente em caracteres individuais.
Resultado

Testador de Política de Senha

Resultados
  • Comprimento
  • Minúsculas
  • Maiúsculas
  • Dígitos
  • Símbolos
  • Sequencial
  • Repetições
  • Lista de bloqueio
Todas as verificações são executadas localmente no seu navegador.

Gerador de Frases de Senha

Palavras são selecionadas uniformemente com aleatoriedade criptograficamente segura (Web Crypto) de uma lista sem ambiguidade de 1271 palavras; 6 palavras fornecem cerca de 62 bits de entropia — use 8 palavras para mais força.

Guia prático de hashing de senhas

Argon2id
  • Use Argon2id com parâmetros razoáveis de resistência a memória
  • Tempo ≥ 2 passagens, memória ≥ 64MB (ajuste conforme o ambiente)
  • Armazene um salt exclusivo por usuário; opcionalmente use um pepper na camada do aplicativo
PBKDF2
  • Escolha SHA-256 ou SHA-512 com iterações ≥ 210k (ajuste conforme necessário)
  • Use um salt exclusivo para cada hash; suporte a atualizações de parâmetro
  • Faça a migração para parâmetros de maior custo no próximo login do usuário
BCrypt
  • Defina o custo entre 10–14, dependendo das capacidades do servidor
  • Evite problemas de truncamento; gere hash da senha completa
  • Implemente limitação de taxa e monitoramento nos endpoints de autenticação
Referência: NIST SP 800-63B, OWASP ASVS. Os parâmetros devem se alinhar às capacidades de hardware e aos SLOs.

Avaliador de Força de Senha

A força é aproximada pela entropia: entropia = log2(tamanho do conjunto de caracteres) × comprimento. Um conjunto de caracteres maior e um comprimento maior melhoram a resistência a adivinhações.

  • Fraca: < 50 bits —— Adequada apenas para cenários únicos ou de baixo valor
  • Razoável: 50–80 bits —— Aceitável para cenários de baixo risco
  • Forte: 80–110 bits —— Alvo padrão recomendado
  • Excelente: > 110 bits —— Recomendado para contas de admin ou críticas

Observação: Modelos de ataque do mundo real podem variar; evite reutilizar senhas e ative a autenticação multifator (MFA).

Como Usar

  • Selecione o comprimento e o conjunto de caracteres (Minúsculas/Maiúsculas/Digitos/Símbolos); ative opcionalmente "Evitar Semelhantes" e "Exigir Cada"
  • Para controle mais preciso: exclua caracteres específicos ou grupos de caracteres, ou escolha subconjuntos de símbolos
  • Selecione quantas senhas deseja gerar, depois clique em Gerar; os resultados em lote são desduplicados automaticamente e podem ser copiados de uma só vez
  • Para validar senhas existentes, use o Testador de Políticas; para frases de acesso fáceis de lembrar, use o Gerador de Frases de Acesso

Recursos

  • Fonte aleatória criptograficamente segura (Web Crypto)
  • Conjuntos de caracteres e grupos de símbolos configuráveis
  • Filtragem de caracteres semelhantes e exclusões personalizadas
  • Geração em lote de 1 a 100 senhas, sempre exclusivas
  • Métricas de força e entropia
  • Testador de Políticas e Gerador de Frases de Acesso
  • Exemplos de código multilíngue
  • Cópia com um clique (única ou todas)

Exemplos de Geração de Senhas

Forte
Comprimento 24, inclui letras maiúsculas, minúsculas, dígitos e símbolos
Fácil de lembrar
Comprimento 16, inclui letras maiúsculas, minúsculas e dígitos; evita caracteres semelhantes

Base de Conhecimento sobre Senhas

1) Força e Entropia da Senha
  • Entropia ≈ log2(tamanho do conjunto de caracteres) × comprimento; o comprimento geralmente contribui mais
  • Metas recomendadas: Contas gerais ≥ 80 bits; Contas com altos privilégios/financeiras ≥ 110 bits
  • Conjunto de caracteres maior + comprimento maior → maior resistência a adivinhação
2) Comprimento vs. Complexidade
  • Adicionar símbolos cegamente é menos eficaz do que aumentar o comprimento
  • Evite padrões previsíveis (ex.: sempre 'letra maiúscula no início + número no final!')
  • Priorize um comprimento suficiente e, em seguida, aumente moderadamente a diversidade de caracteres
3) Erros Comuns e Anti-Padrões
  • Sequências de teclado (ex.: qwerty), blocos repetidos, datas de aniversário/anos são facilmente alvo de regras
  • Usar 'senha raiz + sufixo do site' cria reutilização de variantes, concentra risco e torna as senhas mais fáceis de adivinhar
  • Nunca reutilize a mesma senha em vários sites
4) Recomendações de Gerenciamento de Senhas
  • Use um gerenciador de senhas; garanta senhas exclusivas por site; ative MFA para contas críticas
  • Evite transmitir senhas em texto simples por canais públicos; use frases de acesso 'pronunciáveis' quando necessário
  • Altere e torne as senhas exclusivas imediatamente se for detectado vazamento ou reutilização
5) Diretrizes para Frases de Acesso
  • Combinações de 4 a 6 palavras aleatórias são geralmente fortes e fáceis de lembrar
  • Use separadores, iniciales em maiúsculas e insira números para aumentar a força e a legibilidade
  • Evite concatenar diretamente frases comuns, letras de músicas ou citações famosas

Melhores Práticas de Segurança de Senhas

Melhores Práticas
  • Use comprimento suficiente: 16+ caracteres para contas gerais, 24+ para contas críticas
  • Para facilidade de memorização, priorize frases-senha; use um gerenciador de senhas para armazenar senhas aleatórias de alta força
  • Ative a autenticação multifator (MFA) sempre que possível
  • Nunca reutilize senhas entre sites — cada conta deve ter uma senha exclusiva
Entropia e Força

A entropia mede a imprevisibilidade com base no comprimento e no tamanho do conjunto de caracteres — quanto maior o número de bits de entropia, mais forte geralmente é a senha.

  • Priorize o aumento do comprimento para obter o máximo de aumento de força
  • Use vários conjuntos de caracteres quando viável
  • Excluir muitos caracteres reduz o conjunto de caracteres e enfraquece a força
Políticas e Rotação
  • Prefira requisitos de comprimento e listas negras de senhas comuns/vazadas em vez de regras de composição complexas
  • Evite rotações obrigatórias frequentes; altere a senha somente quando uma violação ou risco for detectado
  • Use listas de senhas comprometidas para bloquear senhas comumente usadas ou vazadas
Frases-Senha
  • Use 4 a 6 palavras aleatórias unidas por separadores, por exemplo, lago-CENOURA-planeta_7
  • Evite citações famosas, letras de músicas ou outras frases comuns; a aleatoriedade é mais importante do que a "esperteza"
  • Para contas críticas, use um gerenciador de senhas para armazenar senhas verdadeiramente aleatórias de alta entropia
Dicas de Configuração de Geração
  • "Exigir cada conjunto selecionado" garante que pelo menos um caractere de cada categoria escolhida apareça
  • "Evitar similares" melhora a legibilidade, mas reduz ligeiramente o tamanho do conjunto de caracteres
  • Símbolos podem ser restritos a um subconjunto suportado pelo sistema alvo
Armazenamento no Servidor
  • Nunca armazene senhas em texto simples; use hashing forte (Argon2id/PBKDF2/Bcrypt) com sal
  • Configure os parâmetros (memória/tempo/custo) adequadamente; considere usar pimenta quando necessário
  • Limite a taxa de tentativas de login e monitorar falhas; aplique CAPTCHAs ou verificação de dispositivo durante ataques
Multifator e Recuperação
  • Prefira TOTP ou chaves de hardware; evite SMS sempre que possível
  • Fluxos de recuperação seguros com autenticação multifator ou verificação por e-mail e aplique períodos de resfriamento
  • Forneça códigos de recuperação de backup e incentive os usuários a armazená-los com segurança
Proteção contra Força Bruta
  • Implemente atrasos progressivos ou bloqueios com pontuação de risco de IP/dispositivo
  • Aplique WAFs e limites de taxa para APIs e formulários de login
  • Monitore stuffing de credenciais e incentive os usuários a adotar senhas exclusivas
Armazenamento Local e Manuseio
  • Use um gerenciador de senhas confiável para armazenamento e preenchimento automático
  • Nunca compartilhe senhas em texto simples por chat ou e-mail; use ferramentas de gerenciamento de segredos para equipes
  • Se anote senhas offline, garanta a segurança física
Aviso: Esta ferramenta gera senhas localmente no seu navegador usando Web Crypto; nenhum dado é enviado a nenhum servidor.

Como gerar senhas por meio de linguagens de programação

JavaScript (Web Crypto)
function randomPassword(length = 16, sets = {lower:true, upper:true, digits:true, symbols:true}) {
  const pools = {
    lower: 'abcdefghijklmnopqrstuvwxyz',
    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    digits: '0123456789',
    symbols: '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
  };
  let pool = '';
  for (const k of Object.keys(sets)) if (sets[k]) pool += pools[k];
  if (!pool) throw new Error('No charset');
  // Rejection sampling removes modulo bias
  const limit = Math.floor(0x100000000 / pool.length) * pool.length;
  const buf = new Uint32Array(1);
  let out = '';
  for (let i = 0; i < length; i++) {
    do { crypto.getRandomValues(buf); } while (buf[0] >= limit);
    out += pool[buf[0] % pool.length];
  }
  return out;
}
Python (secrets)
import secrets

def random_password(length=16, lower=True, upper=True, digits=True, symbols=True):
    pools = {
        'lower': 'abcdefghijklmnopqrstuvwxyz',
        'upper': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits': '0123456789',
        'symbols': '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    }
    pool = ''.join(v for k, v in pools.items() if locals()[k])
    if not pool:
        raise ValueError('No charset')
    return ''.join(secrets.choice(pool) for _ in range(length))
PHP (random_int)
function random_password($length = 16, $sets = ['lower'=>true,'upper'=>true,'digits'=>true,'symbols'=>true]) {
    $pools = [
        'lower' => 'abcdefghijklmnopqrstuvwxyz',
        'upper' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits' => '0123456789',
        'symbols' => '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    ];
    $pool = '';
    foreach ($sets as $k => $on) if ($on) $pool .= $pools[$k];
    if ($pool === '') throw new Exception('No charset');
    $out = '';
    for ($i = 0; $i < $length; $i++) {
        $out .= $pool[random_int(0, strlen($pool)-1)];
    }
    return $out;
}
Go (crypto/rand)
package main

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

func RandomPassword(length int, pool string) (string, error) {
  out := make([]byte, length)
  for i := 0; i < length; i++ {
    nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(pool))))
    if err != nil { return "", err }
    out[i] = pool[nBig.Int64()]
  }
  return string(out), nil
}
Java (SecureRandom)
import java.security.SecureRandom;

public class Pw {
  static final String POOL = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
  static final SecureRandom SR = new SecureRandom();
  static String randomPassword(int length) {
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
      int idx = SR.nextInt(POOL.length());
      sb.append(POOL.charAt(idx));
    }
    return sb.toString();
  }
}
C# (.NET RandomNumberGenerator)
using System;
using System.Security.Cryptography;

public static class Pw {
  public static string RandomPassword(int length, string pool) {
    // GetInt32 draws an unbiased value in [0, pool.Length)
    var chars = new char[length];
    for (int i = 0; i < length; i++) {
      chars[i] = pool[RandomNumberGenerator.GetInt32(pool.Length)];
    }
    return new string(chars);
  }
}
Rust (rand + getrandom)
use rand::rngs::OsRng;
use rand::Rng;

fn random_password(length: usize, pool: &str) -> String {
    // gen_range is uniform, so there is no modulo bias
    let chars: Vec = pool.chars().collect();
    (0..length)
        .map(|_| chars[OsRng.gen_range(0..chars.len())])
        .collect()
}

fn main() {
    let pool = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
    let pw = random_password(16, pool);
    println!("{}", pw);
}