Cartão fictício + explicação técnica

Cartão de Crédito Válido (Luhn / mod-10)

Cartão válido significa que passa no algoritmo Luhn (mod-10), o checksum criado por Hans Peter Luhn em 1954 na IBM e adotado pela ISO 7812 pra numeração de cartões. Todo cartão gerado pelo FakeForge tem o último dígito calculado corretamente. Abaixo, o gerador + explicação passo a passo do algoritmo.

Todo cartão gerado tem checksum Luhn correto e passa validador de qualquer front-end

Clique em Gerar para começar

O que torna um cartão "válido"

Um número de cartão é válido quando o último dígito (dígito verificador ou check digit) é o resultado correto do algoritmo Luhn aplicado aos 15 dígitos anteriores (ou 14, no caso de Amex de 15 dígitos totais). Se você digitar 1 dígito errado no meio do número, o Luhn detecta. Se trocar 2 dígitos adjacentes, também detecta. Por isso ele é usado no mundo todo pra validar entrada de cartão no front-end antes de mandar pro gateway.

Válido não significa emitido. Ninguém precisou aprovar o cartão pra ele ser válido matematicamente - qualquer sequência de 16 dígitos onde o último bate com o cálculo é válida. Só emissores (Visa, Master, Elo) sabem quais desses números foram realmente atribuídos a titulares reais.

Algoritmo Luhn passo a passo

Pra validar o cartão 4485 1234 5678 9012:

  1. Da direita pra esquerda, dobra cada dígito em posição par (segundo, quarto, sexto...).
  2. Se o resultado da multiplicação passar de 9, soma os dígitos (ex: 8 × 2 = 16 → 1 + 6 = 7).
  3. Soma todos os dígitos (os que foram dobrados + os que não foram).
  4. Se o total for múltiplo de 10, o cartão é válido. Se não, é inválido.

Pra gerar um cartão válido (o que o FakeForge faz), você calcula tudo isso menos o último dígito, depois escolhe o último dígito que faz o total virar múltiplo de 10. Detalhes completos com implementação em JavaScript no artigo Algoritmo Luhn.

Implementação em JavaScript

function isValidLuhn(cardNumber: string): boolean {
  const digits = cardNumber.replace(/\D/g, "").split("").map(Number);
  let sum = 0;
  let shouldDouble = false;

  for (let i = digits.length - 1; i >= 0; i--) {
    let digit = digits[i];
    if (shouldDouble) {
      digit *= 2;
      if (digit > 9) digit -= 9;
    }
    sum += digit;
    shouldDouble = !shouldDouble;
  }

  return sum % 10 === 0;
}

// Testar com cartão gerado pelo FakeForge
isValidLuhn("4485 1234 5678 9012"); // true ou false

Prefixos BIN por bandeira

Antes de validar Luhn, o front-end costuma identificar a bandeira pelo prefixo (BIN - Bank Identification Number). O FakeForge respeita esses prefixos ao gerar:

  • Visa: começa com 4 (13, 16 ou 19 dígitos)
  • Mastercard: 51-55 ou 2221-2720 (16 dígitos)
  • Elo: prefixos específicos como 636368, 438935, 504175, 451416, 509046 (16 dígitos)
  • Hipercard: 606282 (16 dígitos)
  • Amex: 34 ou 37 (15 dígitos, CVV de 4)

Perguntas Frequentes

Cartão válido é diferente de cartão fake?+

Não. Todo cartão gerado por ferramentas de teste sérias (incluindo o FakeForge) é ao mesmo tempo válido (passa Luhn) e fake (não vinculado a conta real). Cartão sem Luhn é 'aleatório' e falha na primeira validação de front-end.

Cartão gerado passa no BIN Check?+

Sim pro BIN em si (prefixo da bandeira). Não pra API de BIN lookup que consulta emissor real - essas APIs sabem quais faixas de BIN foram emitidas pra quais bancos. Um cartão fake com prefixo 4485 pode não corresponder a nenhum banco existente pra esse BIN.

Luhn é a única validação de cartão?+

É a primeira. Depois vem verificação de bandeira (BIN), formato (dígitos por bandeira), CVV, expiry date, e finalmente o call ao gateway que checa se o número existe + tem saldo + passa 3DS. O FakeForge cobre as 4 primeiras camadas.

Cartão válido pra Netflix teste?+

Serviços que checam apenas Luhn no front vão aceitar o cartão gerado. Serviços que fazem pré-autorização (bloqueio de R$1 ou similar) vão rejeitar porque o número não corresponde a conta real. Netflix faz pré-auth, então não passa - use o teste gratuito oficial.

Ferramentas relacionadas