Validador de Cartão de Crédito
Informações sobre Bandeiras de Cartões
O que é o Algoritmo de Luhn?
O Algoritmo de Luhn, também conhecido como "módulo 10" ou "fórmula de Luhn", é um método de soma de verificação criado por Hans Peter Luhn, cientista da computação da IBM em 1954. É utilizado para validar números de identificação como números de cartões de crédito, IMEI de telefones celulares e números de documentos em diversos países.
O algoritmo é projetado para proteger contra erros acidentais, como erros de digitação, e não para segurança contra fraudes deliberadas. Funciona da seguinte forma:
- Iniciando pelo penúltimo dígito e movendo-se da direita para a esquerda, dobre o valor de cada segundo dígito.
- Se o resultado da duplicação for maior que 9 (ex: 8 × 2 = 16), some os dígitos do resultado (ex: 1 + 6 = 7).
- Some todos os dígitos, incluindo os não duplicados.
- Se o total for divisível por 10 (ou seja, termina em 0), o número é válido segundo o algoritmo de Luhn.
Este algoritmo consegue detectar qualquer erro de dígito único, bem como quase todos os erros de transposição (quando dois dígitos adjacentes são trocados). Por isso, é amplamente utilizado para validação preliminar de números de cartão de crédito antes mesmo de uma transação ser processada.
Por que validar cartões de crédito?
Perguntas Frequentes
Não. Esta ferramenta realiza apenas uma validação matemática usando o algoritmo de Luhn e verificação do padrão da bandeira. Ela não verifica se o cartão realmente existe, está ativo ou tem fundos disponíveis.
Para determinar se um cartão realmente existe e está ativo, seria necessário fazer uma verificação com as operadoras de cartão ou processadoras de pagamento, o que exigiria:
- Integração com gateways de pagamento
- Informações adicionais como data de validade e código de segurança (CVV)
- Autorização formal para realizar transações de teste (geralmente com valores simbólicos)
- Compliance com regulamentações de segurança como PCI DSS
O algoritmo de Luhn é apenas um primeiro filtro para detectar erros de digitação antes que uma transação seja enviada para processamento. Um número pode passar na verificação do algoritmo de Luhn e ainda assim ser um número de cartão inválido, inexistente ou fraudulento.
Esta ferramenta é útil para desenvolvedores e equipes de QA que precisam testar sistemas de pagamento sem usar números de cartão reais, ou para validar rapidamente o formato e estrutura de números de cartão.
A identificação da bandeira do cartão é feita analisando os primeiros dígitos do número, conhecidos como "BIN" (Bank Identification Number) ou "IIN" (Issuer Identification Number). Cada bandeira de cartão tem faixas específicas reservadas:
- Visa: Começa com 4 e tem 13, 16 ou 19 dígitos
- Mastercard: Começa com números de 51 a 55 ou 2221-2720 e tem 16 dígitos
- American Express: Começa com 34 ou 37 e tem 15 dígitos
- Discover: Começa com 6011, 622126-622925, 644-649 ou 65 e tem 16 dígitos
- JCB: Começa com 3528-3589 e tem 16 a 19 dígitos
- Diners Club: Começa com 300-305, 36, 38-39 e tem 14-19 dígitos
- Elo: Começa com vários prefixos específicos como 401178, 506699, etc.
- Hipercard: Começa com 606282, 384100, etc. e tem 16 dígitos
Esta identificação é apenas baseada nos padrões oficiais publicados pelas respectivas bandeiras, mas é importante observar que:
- As bandeiras ocasionalmente expandem suas faixas de números
- Algumas faixas de números podem se sobrepor entre bandeiras menos comuns
- Cartões co-branded podem apresentar características especiais
Para uma identificação 100% precisa da bandeira e tipo de cartão, seria necessário consultar bancos de dados de BIN completos e atualizados, que são geralmente fornecidos por serviços especializados.
Embora esta ferramenta funcione inteiramente no navegador e não envie dados para servidores externos, não recomendamos utilizar números de cartão de crédito reais por várias razões:
- Segurança de dados: É sempre uma boa prática limitar a exposição de dados sensíveis, mesmo em ferramentas locais.
- Compliance: O uso de números de cartão reais em ferramentas não certificadas pode violar políticas de segurança corporativas ou regulamentações como PCI DSS.
- Proteção adicional desnecessária: Para validar o algoritmo e o formato, números de teste funcionam igualmente bem.
Alternativas seguras:
- Números de teste padronizados: Muitas processadoras de pagamento publicam números de cartão de teste que passam na validação Luhn mas não são números reais.
- Geradores de números de teste: Existem ferramentas que geram números que passam no algoritmo de Luhn sem representar cartões reais.
- Dados mascarados: Se precisar testar com dados próximos aos reais, use versões mascaradas onde apenas os últimos 4 dígitos são mantidos.
Lembre-se que o objetivo desta ferramenta é validar o formato e o algoritmo de verificação, não processar cartões reais para transações.
Existem várias maneiras de gerar números de cartão de crédito de teste que passam na verificação do algoritmo de Luhn, mas não são cartões reais:
1. Números de teste oficiais das bandeiras:
Várias bandeiras e processadoras de pagamento disponibilizam números de teste para desenvolvedores:
- Visa: 4111 1111 1111 1111
- Mastercard: 5555 5555 5555 4444
- American Express: 3782 822463 10005
- Discover: 6011 1111 1111 1117
2. Algoritmo para gerar números válidos:
- Escolha um prefixo válido para a bandeira desejada (ex: 4 para Visa)
- Complete com dígitos aleatórios até o penúltimo dígito
- Calcule o dígito de verificação usando o algoritmo de Luhn
- Adicione o dígito de verificação como último dígito
3. Ferramentas online:
Existem diversos geradores de números de cartão de teste online que criam números válidos segundo o algoritmo de Luhn para diferentes bandeiras.
4. Implementação manual do algoritmo de Luhn reverso:
Se você tem 15 dígitos e precisa determinar o 16º para que o número passe na validação de Luhn:
- Aplique o algoritmo de Luhn nos 15 dígitos
- O dígito verificador será o número que, quando adicionado ao resultado, torna o total divisível por 10
O algoritmo de Luhn foi projetado especificamente para detectar os tipos mais comuns de erros que ocorrem na entrada manual de números, especialmente em cartões de crédito. Ele é eficaz contra:
Tipos de erros detectados com eficiência:
- Erro em um único dígito: Se qualquer dígito for digitado incorretamente (ex: 5 em vez de 6), o algoritmo de Luhn detectará o erro com 100% de precisão.
- Transposição de dígitos adjacentes: Se dois dígitos consecutivos forem trocados (ex: 12 se tornando 21), o algoritmo detectará o erro em mais de 98% dos casos.
Como o algoritmo detecta esses erros:
O algoritmo funciona através de um sistema de ponderação específico:
- Quando um dígito é alterado, a soma total calculada pelo algoritmo muda
- Devido à duplicação alternada de dígitos, erros de transposição afetam a soma total de maneira desproporcional
- A verificação final (divisibilidade por 10) atua como um checksum que identifica essas alterações
Exemplo matemático:
Número correto: 4532 0151 5522 0112
Cálculo Luhn: 8 + 5 + 6 + 2 + 0 + 1 + 5 + 1 + 1 + 0 + 4 + 4 + 0 + 2 + 2 + 4 = 45
Resultado: 45 % 10 = 5 (não divisível por 10, inválido)
Número com erro: 4532 0151 5522 0
1
12 (5 digitado como 1)
Cálculo Luhn: 8 + 5 + 6 + 2 + 0 + 1 + 5 + 1 + 1 + 0 + 4 + 4 + 0 + 2 + 2 + 4 = 45
Resultado: 45 % 10 = 5 (não divisível por 10, algoritmo detectou o erro)
Limitações:
O algoritmo não consegue detectar todos os tipos de erros:
- Adição ou remoção de dígitos (alteração no comprimento)
- Alguns casos raros de múltiplos erros que se "cancelam" matematicamente
- Certos padrões específicos de transposição de dígitos não adjacentes
Apesar dessas limitações, o algoritmo permanece extremamente útil, pois consegue detectar aproximadamente 95% dos erros de digitação comuns, tornando-o uma verificação preliminar valiosa antes do processamento completo de um cartão.