utildev
← Blog
Geradores de Segurança6 min

O algoritmo Luhn e a validação de cartões de crédito

Entenda como o algoritmo Luhn valida números de cartão de crédito, como calculá-lo manualmente e por que ele não garante que o cartão seja válido.

O algoritmo de Luhn, também conhecido como "fórmula de módulo 10" ou "mod 10", é um algoritmo simples de checksum criado por Hans Peter Luhn em 1954, quando trabalhava na IBM. Seu objetivo original era verificar a integridade de números de identificação — hoje é o padrão adotado por praticamente todos os cartões de crédito do mundo.

Como o algoritmo funciona

O algoritmo percorre os dígitos do número da direita para a esquerda, dobrando o valor de cada segundo dígito. Se o resultado for maior que 9, subtrai-se 9. Por fim, todos os valores são somados. Se o total for divisível por 10, o número é válido.

  • Comece pelo último dígito (dígito verificador) e vá para a esquerda
  • Dobre o valor de cada segundo dígito (posições ímpares da direita)
  • Se o dígito dobrado for maior que 9, subtraia 9
  • Some todos os dígitos
  • Se a soma for divisível por 10, o número é válido (Luhn)
Número: 4 5 3 9 1 4 8 8 0 3 4 3 6 4 6 7
Posição:→ dobrar  dobrar  dobrar  dobrar  dobrar  dobrar  dobrar  dobrar
Após:    4 10 3 18 1  8  8 16  0  6  4  6  6  8  6 14
Subtrai 9 se >9: 4 1 3 9 1 8 8 7 0 6 4 6 6 8 6 5
Soma: 4+1+3+9+1+8+8+7+0+6+4+6+6+8+6+5 = 82
82 mod 10 = 2 (inválido)

O que Luhn valida e o que não valida

Um número que passa no Luhn não é necessariamente um cartão real e ativo. O algoritmo apenas verifica a integridade do número, não sua existência ou saldo.

Luhn é uma verificação de integridade — ele detecta erros de digitação simples, como um dígito errado ou dois dígitos trocados de posição. Ele não verifica se o cartão existe, se tem saldo, se está ativo, ou se pertence a quem o apresentou. Essas verificações são feitas pelas redes de pagamento (Visa, Mastercard, etc.) em tempo real.

Onde mais o algoritmo Luhn é usado

  • Números IMEI de celulares
  • Números de previdência social canadenses (SIN)
  • Números de identificação de provedores de saúde nos EUA (NPI)
  • Códigos de barras em alguns padrões
  • Números de série de produtos de várias fabricantes

Gerando dados de teste com cartões Luhn-válidos

Em desenvolvimento e testes de sistemas de pagamento, é comum precisar de números de cartão que passem na validação do frontend sem usar dados reais. As redes de pagamento definem prefixos reservados para testes: Visa usa 4111111111111111, Mastercard usa 5500005555555559, entre outros. Todos passam no algoritmo Luhn e nunca processam transações reais.

Use o Gerador de Cartão de Crédito do UtilDev para gerar números Luhn-válidos por bandeira para seus testes de integração. O Validador de Cartão permite verificar qualquer número contra o algoritmo e identificar a bandeira pelo prefixo.

Ferramentas relacionadas

Gerador de Cartão de Crédito
Gere números de cartão de crédito válidos para testes
Validador de Cartão de Crédito
Valide números de cartão de crédito usando algoritmo de Luhn

Artigos relacionados

Como criar e armazenar senhas seguras6 min →