Gerador de CNH para Testes
Gere números de CNH com dígitos verificadores matematicamente corretos para uso em desenvolvimento e testes de software.
Estrutura da CNH
O Registro Nacional de Habilitação (RENACH) da CNH é composto por 11 dígitos numéricos:
NNNNNNNNN D1 D2
└── 9 dígitos base ──┘ └─ verificadoresNão há formatação com pontos ou traços — a CNH é exibida como sequência numérica pura de 11 dígitos.
Algoritmo dos dígitos verificadores (DENATRAN)
Dígito 1 (D1)
D1 = (d[0]×9 + d[1]×8 + d[2]×7 + d[3]×6 + d[4]×5 +
d[5]×4 + d[6]×3 + d[7]×2 + d[8]×1) mod 11
Se D1 ≥ 10 → D1 = 0Dígito 2 (D2)
D2 = (d[0]×1 + d[1]×2 + d[2]×3 + d[3]×4 + d[4]×5 +
d[5]×6 + d[6]×7 + d[7]×8 + d[8]×9 + D1×2) mod 11
Se D2 ≥ 10 → D2 = 0Para que serve gerar CNH fictícia?
No desenvolvimento de software que processa dados de motoristas, é necessário ter dados de teste que:
- Passem na validação de formato dos formulários e sistemas
- Não correspondam a pessoas reais (requisito da LGPD)
- Cubram casos extremos (dígitos verificadores = 0, sequências repetidas)
- Sirvam como fixtures em testes automatizados (unitários, integração, E2E)
Exemplos de aplicações: sistemas de locadoras, seguradoras, despachantes, órgãos de trânsito, fintechs que precisam validar CNH como documento de identidade.
LGPD e uso responsável
A Lei Geral de Proteção de Dados (LGPD) exige que dados pessoais reais não sejam usados em ambientes de desenvolvimento e teste sem consentimento e medidas de segurança adequadas. Usar dados fictícios matematicamente válidos é a solução correta para conformidade.
Nunca use estes números gerados para:
- Falsificação de documentos
- Preenchimento de formulários oficiais
- Simulação de identidade
Perguntas frequentes
O estado emissor influencia no número?
Não no cálculo dos dígitos verificadores. O RENACH (número da CNH) é calculado apenas com os 9 dígitos base, independentemente do estado. O estado é informado como dado complementar no documento físico.
Como validar uma CNH em código?
function validarCnh(cnh) {
const d = cnh.split('').map(Number);
if (d.length !== 11) return false;
let sum1 = 0;
for (let i = 0; i < 9; i++) sum1 += d[i] * (9 - i);
const d1 = sum1 % 11 >= 10 ? 0 : sum1 % 11;
let sum2 = 0;
for (let i = 0; i < 9; i++) sum2 += d[i] * (1 + i);
sum2 += d1 * 2;
const d2 = sum2 % 11 >= 10 ? 0 : sum2 % 11;
return d[9] === d1 && d[10] === d2;
}CNH gerada pode coincidir com uma CNH real?
Matematicamente sim — qualquer número de 11 dígitos que passe no algoritmo DENATRAN poderia ser uma CNH real. Por isso, estes números não devem sair do ambiente de desenvolvimento.