Verificador de força de senha
Análise em tempo real com o motor zxcvbn: dicionários de senhas comuns, sequências de teclado, sequências numéricas, repetições e datas reduzem a pontuação — uma medida de segurança muito mais precisa do que contar classes de maiúsculas/minúsculas/dígitos/símbolos. Tudo é executado localmente; sua senha nunca sai do navegador.
- Motor
- zxcvbn
- Pontuação
- Escala de 0 a 4
- Privacidade
- Nunca enviado
- Dicionário
- Senhas comuns integradas
Configurações avançadas da política
Separado por vírgula ou nova linha, não diferencia maiúsculas e minúsculas. O zxcvbn captura automaticamente variações de maiúsculas e minúsculas, substituições leet (ex: Pa$$w0rd) e reversões.
Comparar duas senhas
POR QUE ISSO IMPORTA
Por que "maiúscula + minúscula + dígito + símbolo" não é segurança
P@ssw0rd! cumpre os quatro requisitos de caracteres e ainda figura nas principais listas de vazamentos. A força está na imprevisibilidade, não na aritmética de classes de caracteres.
Verificação de senhas fracas
Um dicionário integrado de senhas comuns e palavras recebe penalizações severas — senha, 123456 e P@ssw0rd são classificadas corretamente como muito fracas.
Detecção de padrões
Caminhos de teclado, sequências diretas, repetições, datas e palavras comuns reduzem o espaço de previsão efetivo.
Entropia efetiva, não teórica
A pontuação estima previsões reais a partir das estruturas encontradas — não o tamanho do conjunto de caracteres multiplicado pelo comprimento.
Dois cenários de ataque
Estimativas separadas para criptografia offline com GPU e adivinhação online com limite de taxa ajudam a entender o custo do ataque para o invasor.
Política personalizada e lista de bloqueio
Defina requisitos de comprimento mínimo e de classes de caracteres; adicione nomes de empresa ou nomes de código de projetos para cumprir as regras de senhas corporativas.
Totalmente local
Sua senha nunca sai do navegador nem toca em um servidor; as configurações ficam apenas no seu próprio localStorage.
Entendendo a força da senha
Como funciona a pontuação, o que significam os tempos de quebra e o que realmente faz uma boa senha.
Como é calculada a pontuação de 0 a 4 do zxcvbn?
O zxcvbn primeiro divide a senha em partes: palavras de dicionário (senhas comuns, palavras em inglês), caminhos de teclado, sequências, repetições, datas e fragmentos de força bruta.
Ele estima o número de previsões por parte, combina-as em uma contagem total e mapeia-a para uma pontuação de 0 a 4. Transformações comuns são levadas em conta automaticamente — inversão de maiúsculas e minúsculas, substituições leet (@→a, 0→o), sufixos de ano — razão pela qual P@ssw0rd recebe uma pontuação baixa, apesar da variedade de caracteres.
Qual é a diferença entre entropia efetiva e tamanho do conjunto de caracteres?
O tamanho do conjunto de caracteres multiplica o tamanho do alfabeto pelo comprimento — um limite teórico que assume que cada caractere é totalmente aleatório, o que raramente acontece com senhas reais.
A entropia efetiva (a contagem de bits mostrada aqui) é o espaço de previsão real que o zxcvbn estima após encontrar palavras de dicionário e padrões. No mesmo comprimento, iloveyou2024 tem muito menos entropia efetiva que uma string aleatória.
Como os tempos de quebra são estimados — eles são confiáveis?
Tempo de quebra = estimativa de tentativas ÷ tentativas por segundo. São mostradas duas velocidades: ~10 bilhões/segundo para um farm de GPUs offline (o atacante tem o hash) e ~100/hora para um login online com limitação de taxa.
Considere-as como ordens de grandeza, não como previsões: a velocidade real depende do algoritmo de hash (bcrypt/Argon2 são ordens de grandeza mais lentos que o MD5), do hardware e da qualidade do dicionário. Um erro de 10× não muda nada; uma diferença de um milhão de vezes sim.
O que realmente faz uma senha boa?
Duas rotas sólidas: uma string aleatória de 16+ caracteres de um gerenciador de senhas, única por site; ou uma senha composta por 4+ palavras não relacionadas (como cavalo-bateria-correto-velcro) — longa e sem sentido.
Escolha o que escolher, combine-a com autenticação multifator (MFA) e nunca reutilize a mesma senha em sites diferentes.
Meu site exige maiúscula/minúscula/dígito/símbolo — por que a pontuação é baixa?
A política corporativa (comprimento, classes de caracteres) é um limite de conformidade: ela responde "está em conformidade?". A pontuação do zxcvbn responde "ela pode ser adivinhada?". As duas são independentes.
Adicionar um ponto de exclamação e um ano a uma palavra comum (senha!2024) passa na maioria das verificações de política, mas cai diante de um ataque de dicionário em segundos.
Minha senha é enviada para algum lugar?
Não. Tudo funciona no seu navegador via JavaScript — não há requisição de rede que envie a senha, e ela também funciona offline. Apenas sua política personalizada (regras de comprimento, lista de bloqueio) é armazenada localmente; ela nunca contém uma senha.
Verificando força de senha em código
Para adicionar verificações de força em tempo real ao seu próprio formulário de cadastro ou de alteração de senha, use uma porta do zxcvbn para o seu idioma:
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
const res = zxcvbn('P@ssw0rd!');
console.log(res.score, res.crack_times_display);
</script>
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
composer require bjeavons/zxcvbn-php
<?php
require __DIR__ . '/vendor/autoload.php';
use ZxcvbnPhp\Zxcvbn;
$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
go get github.com/nbutton23/zxcvbn-go
package main
import (
"fmt"
zxcvbn "github.com/nbutton23/zxcvbn-go"
)
func main() {
res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
fmt.Println(res.Score, res.Guesses)
}
# Add dependency
cargo add zxcvbn
use zxcvbn::zxcvbn;
fn main() {
match zxcvbn("P@ssw0rd!", &[]) {
Ok(estimate) => {
println!("score: {}", estimate.score()); // 0..4
if let Some(times) = estimate.crack_times() {
println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
}
}
Err(err) => eprintln!("zxcvbn error: {err}"),
}
}
As pontuações e estimativas de padrão podem diferir ligeiramente desta página dependendo das versões da biblioteca, mas os princípios são os mesmos. Para verificações do lado do servidor, também imponha um limite máximo de comprimento e limitação de taxa, para que entradas excessivamente grandes não possam ser usadas para sobrecarregar a CPU.
Perguntas frequentes
Como funciona este verificador de força de senha?
Ele usa o zxcvbn, o algoritmo open-source da Dropbox: a senha é comparada a dicionários de senhas comuns, listas de palavras em inglês, sequências de teclado, sequências lógicas, datas e padrões repetidos. O número médio estimado de tentativas que um atacante precisa é mapeado para uma pontuação de 0 a 4 e estimativas de tempo de quebra.
P@ssw0rd parece complexo — por que é "muito fraco"?
É uma das senhas fracas mais icônicas em conjuntos de dados de vazamentos. Ele aparece diretamente nos dicionários do zxcvbn, e a capitalização mais substituições "leet" (a→@, o→0) são reconhecidas automaticamente. Caracteres variados com uma estrutura totalmente previsível é exatamente o que dicionários de atacantes baseados em regras tentam primeiro.
Quanto tempo deve ter uma senha?
Quando gerada aleatoriamente, 12+ caracteres geralmente derrotam ataques online, enquanto 16+ resistem à quebra offline via GPU por muitos anos. O comprimento importa mais do que a complexidade dos caracteres: uma string aleatória de 20 caracteres em minúsculas supera uma de 10 caracteres misturando todas as quatro classes.
Por que separar os tempos de quebra offline e online?
Os cenários de ataque são diferentes: após um vazamento de banco de dados, um atacante pode tentar hashes localmente em GPUs a bilhões de tentativas por segundo; contra um login ativo, a limitação de taxa permite apenas algumas tentativas por segundo. A mesma senha pode sobreviver um trilhão de vezes mais em um cenário do que no outro — por isso ambos são mostrados.
Meus dados de entrada são armazenados em algum lugar?
Não. Sua senha fica apenas na memória do seu navegador e desaparece ao atualizar a página. Apenas as configurações da sua política personalizada (regras de comprimento, lista de bloqueio) são mantidas no armazenamento local — elas nunca contêm uma senha.