Command Palette

Search for a command to run...

Algoritmo de Luhn: Como funciona a validação de cartão de crédito

Algoritmo de Luhn: Como funciona a validação de cartão de crédito

T
Toolz Team
|Sep 13, 2026|16 min ler
Prefira Toolz.dev no Google

Parte da coleção segurança

Validador de Cartão de Crédito

Verifique um número de cartão de crédito na soma de verificação Luhn e detecte sua rede de cartões Valida apenas o formato, nunca entra em contato com um banco.

Use o Validador de Cartão de Crédito

eu construo Toolz.dev, e antes disso EU passei anos enviando plugins WordPress e APIs Laravel, vários dos quais tiveram que receber pagamentos O primeiro formulário de checkout que EU escrevi enviou todos os números de cartão digitados incorretamente direto para o gateway de pagamento e esperei que ele saltasse Funcionou, tecnicamente, mas foi lento e queimou através de solicitações de gateway em números que nunca poderiam ter sido válidos em primeiro lugar A correção foi embaraçosamente pequena: execute a soma de verificação Luhn no navegador antes de enviar Essa mudança pegou a maioria dos erros de digitação instantaneamente e parou um fluxo de chamadas de API inúteis Este guia é sobre esse cheque, as regras de prefixo que ficam ao lado dele e o Validador de Cartão de Crédito Eu construí para que você nunca precise reimplementar de memória.

tl;dr: Um validador de cartão de crédito confirma que um número é estruturalmente correto, não que pertença a uma conta real Ele executa dois testes independentes: a soma de verificação Luhn da ISO/IEC 7812-1, que captura quase todos os tipos de letra de um dígito e transposição adjacente, e uma verificação de comprimento e prefixo em relação a cada rede' s intervalos de emissor publicados Um número pode passar um e falhar o outro, então os dois resultados são relatados separadamente Ele é executado inteiramente em seu navegador, então nenhum número de cartão é carregado, e nunca pode dizer se um cartão tem dinheiro nele Somente o emissor sabe disso.

O que significa um número de cartão ser válido?

Um número de cartão de pagamento, formalmente um Número de Conta Primária ou PAN, não é uma sequência aleatória de dígitos Sua estrutura é definida por ISO/IEC 7812. Os primeiros seis a oito dígitos são o Número de Identificação do Emissor, ou IIN, que costumava ser chamado de Número de Identificação Bancária (BIN).Esses dígitos identificam a rede e o banco emissor. Os dígitos posteriores até o penúltimo são o identificador individual da conta e o último dígito é um dígito de verificação calculado com o algoritmo Luhn.

Então o & quot; valid" tem dois significados separados, e ajuda a mantê - los separados O primeiro é que o número obedece à soma de verificação de Luhn, o que significa que o dígito de verificação é consistente com o resto do número O segundo é que o número tem o comprimento e o prefixo certos para uma rede de cartões real Um número pode satisfazer uma condição e não a outra. 4111 1111 1111 1112 tem um prefixo Visa e um comprimento Visa, mas falha Luhn Uma cadeia aleatória de dezesseis dígitos que por acaso termina no dígito de verificação direito passa Luhn, mas pode começar com um prefixo que nenhuma rede possui Um bom validador diz qual dos dois falhou, porque a correção é diferente em cada caso.

O que nenhum cheque pode fazer é dizer-lhe que o cartão é real A validade estrutural é sobre a forma do número, não o estado da conta por trás dele A conta pode não existir, pode estar congelada, pode estar acima do seu limite, ou pode ter sido fechada anos atrás O único sistema que sabe é o banco emissor, e responde exatamente uma vez, durante um pedido de autorização em uma transação ao vivo Tudo o que um validador do lado do navegador faz é um pré-filtro barato que é executado antes de você chegar a esse ponto.

Como funciona o algoritmo Luhn?

O algoritmo de Luhn, também chamado de algoritmo mod-10, foi patenteado por Hans Peter Luhn na IBM em 1960 e agora é de domínio público É uma soma de verificação, o que significa que todo o seu propósito é detectar erros acidentais, não fornecer qualquer segurança Funciona assim Começando pelo dígito mais à direita e movendo-se para a esquerda, você dobra a cada segundo dígito Se dobrar produz um número maior que nove, você subtrai nove dele (o que é o mesmo que adicionar seus dois dígitos juntos).Em seguida, você soma todos os dígitos, os duplos e os intocados Se o total é divisível por dez, o número passa.

Aqui está o check on 4111 1111 1111 1111, trabalhando da direita para a esquerda O dígito mais à direita é a posição um e não é duplicado Duplicar cada segundo dígito dá um conjunto de uns e dois, os dois vindos das posições duplicadas Some todos eles e o total pousa em um múltiplo de dez, então o número passa Altere qualquer dígito e a soma quase sempre deixa de ser um múltiplo de dez, que é exatamente o que torna a verificação útil.

O valor de Luhn está no que ele apanha Ele detecta cada erro de um dígito, ou seja, qualquer dígito digitado errado Também apanha quase todas as transposições de dois dígitos adjacentes, o clássico & quot; Eu digitei 21 em vez de 12 & quot; erro, com uma exceção conhecida: ele não pega uma troca de 09 e 90, porque ambos mapeiam para a mesma soma ponderada Isso é um ponto cego genuíno, mas é raro, e é a razão pela qual Luhn é uma soma de verificação em vez de uma garantia criptográfica Para validação de formulário é mais do que bom o suficiente, e é por isso que ele fica atrás dos campos de cartão de essencialmente cada checkout na internet.

Como é detectada a rede de cartões?

A rede é lida a partir dos dígitos iniciais, o IIN. Cada rede possui intervalos de prefixo específicos, e a maioria também restringe o comprimento total O validador corresponde primeiro ao prefixo mais longo e específico, porque alguns intervalos se sobrepõem Aqui estão os intervalos que ele verifica:

rede Começa com Comprimentos válidos Código segurança
Visto 4 13, 16, 19 3
Mastercard 51-55, 2221-2720 16 3
Expresso Americano 34, 37 15 4
Descobrir 6011, 65, 644-649, 622126-622925 16, 19 3
Clube de Jantar 300-305, 309, 36, 38-39 14, 16, 19 3
JCB 3528-3589 16-19 3
UnionPay 62 16-19 3
Maestro 50, 56-69 (selecionado) 12-19 3

As sobreposições são a parte interessante, e errá-las é como os detectores ingênuos falham Mastercard acrescentou o 2221-2720 alcance em 2017, então um detector escrito antes disso relata esses cartões como desconhecidos Descobrir possui uma fatia estreita do 62 espaço, 622126 completo 622925, enquanto a UnionPay é proprietária do resto 62, então a ordem em que você os testa decide se a 6221 o cartão é lido como Discover ou UnionPay O validador testa a janela específica Discover antes do prefixo amplo UnionPay para que ambos pousem corretamente American Express é aquele que faz o disparo do código de formatação, porque usa quinze dígitos agrupados 4-6-5 em vez dos habituais quatro grupos de quatro, e usa um código de segurança de quatro dígitos (o CID impresso na frente) em vez do CVV de três dígitos na parte de trás.

Como usar o validador de cartão de crédito

A ferramenta é deliberadamente simples Você cola um número e lê o resultado Não há botão de envio e nada para configurar.

Passo 1: Insira o número

Digite ou cole o número do cartão no campo Espaços e traços são ignorados, então 4111-1111-1111-1111, 4111 1111 1111 1111, e 4111111111111111 todos validam de forma idêntica Isso importa porque a entrada real chega em todos os formatos: copiada de uma planilha, lida em um cartão ou retirada de um dispositivo elétrico de teste.

Passo 2: Leia o veredicto

O topo do resultado diz claramente se o número é válido, e se não for, nomeia a razão Por baixo, as duas verificações são mostradas separadamente: se a soma de verificação de Luhn passou, e se o comprimento corresponde à rede detectada Vê-los separados é o ponto Um número que passa Luhn, mas falha de comprimento quase sempre significa que um dígito foi descartado ou adicionado, enquanto um número que falha Luhn, mas tem o comprimento certo geralmente significa que um dígito está simplesmente errado.

Passo 3: Verifique a rede detectada

A ferramenta mostra a rede que identificou a partir do prefixo, os comprimentos que a rede permite e quanto tempo seu código de segurança deve ser Isso é útil por conta própria quando você está construindo um formulário e deseja mostrar o logotipo do cartão certo, ou quando você precisa saber se deve esperar um CVV de três ou quatro dígitos.

Passo 4: Copie o número formatado ou mascarado

Você pode copiar o número agrupado da maneira que sua rede o imprime, ou copiar uma versão mascarada que esconde todos os dígitos, exceto os últimos quatro O formulário mascarado é o que você deseja em logs, capturas de tela e tickets de suporte, porque armazenar ou exibir um PAN completo é exatamente o tipo de coisa que coloca as pessoas em apuros com a conformidade.

Onde cabe a validação e onde ela para?

O enquadramento honesto é que um validador é um filtro, não um portão Pertence na frente de um processo rejeitar lixo óbvio de forma barata, e nunca deve ser confiável como prova de qualquer coisa a jusante Em um formulário de checkout, executar Luhn client-side permite sinalizar um erro de digitação no momento em que o usuário termina de digitar, antes de atingir o pagamento, o que é uma experiência melhor e salva uma viagem de ida e volta condenada ao gateway Em um pipeline de dados, a validação de campos em forma de cartão captura linhas corrompidas antes que elas atinjam um sistema que irá sufocar sobre elas Em suítes de teste, você precisa de números que passem na validação para que o formulário se comporte da maneira que será em produção, que é para o que servem os números de teste publicados.

O que não faz é autorizar, e isso vale a pena ser franco sobre Um número válido não é um cartão de trabalho A ferramenta não pode verificar um saldo, não pode confirmar a conta existe, e não tem conexão com qualquer banco Também não pode, e não deve, gerar números vinculados a contas reais Os números de amostra que oferece são os valores de teste padrão publicados pelos provedores de pagamento, que são Luhn-válido e passar verificações de rede precisamente para que os desenvolvedores possam exercer seus formulários, mas que mapa para nada cobrável Se você está construindo qualquer coisa que toca pagamentos reais, a validação real de se um cartão pode ser cobrado acontece servidor-lado através do seu processador de pagamento, e os dados do cartão em si deve ser tokenized para que seus próprios sistemas nunca armazenar um PAN bruto validação cliente-lado é a porta da frente educado, não o cofre.

Como isso se compara à validação no servidor?

Ambos têm um lugar, e eles respondem a perguntas diferentes A validação do lado do cliente com Luhn e verificações de prefixo é instantânea e privada, dá ao usuário feedback antes de enviar, e não custa nada Seu limite é que ele só sabe sobre estrutura A validação do lado do servidor através de um processador de pagamento é a única coisa que pode confirmar que um cartão é real e cobrável, mas custa uma solicitação de rede, pode custar dinheiro por tentativa de autorização, e acontece depois que o usuário se comprometeu a enviar O design sensato usa ambos: o navegador pega os erros de digitação e de forma gratuitamente, e o servidor faz a única verificação que importa quando o usuário paga Pular a verificação do cliente faz o formulário parecer lento; pular a verificação do servidor significa que você nunca realmente validou nada Se você está montando um kit mais amplo para esse tipo de trabalho, o Ferramentas de produtividade do desenvolve roundup cobre os outros utilitários que tendem a viver ao lado dele.

Ferramentas relacionadas e leitura adicional

Um validador de cartão raramente viaja sozinho Quando você está endurecendo um formulário ou um pipeline de dados, geralmente também está gerando identificadores, valores de hash e verificando outros tipos de entrada O gerador hash é o que você busca quando precisa imprimir um valor com a dedo, em vez de validar sua forma, e o verificador força senha aplica o mesmo & quot; meça no navegador, nunca o envie para qualquer lugar & quot; princípio para credenciais No lado da rede, o Calculadora de sub-rede IP é a ferramenta complementar para qualquer pessoa que constrói a infraestrutura em que um checkout é executado.

Para o contexto mais amplo, o Privacidade de dados e ferramentas online o guia explica por que executar verificações confidenciais de assuntos do lado do cliente e o Guia de ferramentas de codificação coloca o validador no contexto do resto de um kit diário do developer' s. Tudo no Toolz.dev é executado em seu navegador, que é toda a razão pela qual um número de cartão é seguro para colar nele: ele nunca sai do seu dispositivo.

Perguntas frequentes

O que o algoritmo Luhn verifica?

O algoritmo de Luhn é uma soma de verificação mod-10 que verifica um número não foi digitado incorretamente Ele dobra cada segundo dígito da direita, subtrai nove de qualquer resultado acima de nove, soma todos os dígitos e confirma que o total é divisível por dez Ele pega cada erro de um dígito e quase cada troca de dois dígitos adjacentes, mas é uma soma de verificação, não um recurso de segurança, e não pode provar que um cartão é real.

Um número válido significa que o cartão funciona?

Não. Um número válido significa apenas que os dígitos estão estruturalmente corretos, então a soma de verificação passa e o comprimento corresponde à rede Se a conta existe, tem um equilíbrio ou ainda está ativa só pode ser confirmada pelo emissor do cartão durante uma autorização real A validade estrutural é um pré-filtro, não prova de um cartão utilizável.

Como a marca do cartão é detectada a partir do número?

A marca é lida a partir dos primeiros dígitos, o Número de Identificação do Emissor Visa começa com 4, Mastercard com 51-55 ou 2221-2720, American Express com 34 ou 37, e assim por diante Cada rede também permite apenas certos comprimentos totais, de modo que o validador verifica o prefixo e o comprimento juntos e relata a rede que ele correspondeu.

É seguro inserir um número de cartão nesta ferramenta?

Sim. o número é processado inteiramente no seu navegador e nunca é carregado, registrado ou transmitido Você pode confirmar isso desconectando-se da internet, porque o validador continua trabalhando sem conexão Isso dito, você ainda deve evitar colar um número de cartão real em qualquer lugar que você não precise, e preferir os números de teste publicados para desenvolvimento.

Por que meu cartão real passa por Luhn, mas falha na verificação de comprimento?

Isso geralmente significa que um dígito foi descartado ou adicionado durante a digitação A soma de verificação de Luhn pode passar por coincidência em um número de comprimento errado, de modo que a ferramenta verifica o comprimento independentemente contra a rede detectada Reinsira o número completo e ambas as verificações devem passar juntas.

O que são números de cartão de teste e por que eles existem?

Números de cartão de teste, como 4111 1111 1111 1111 são publicados por provedores de pagamento para que os desenvolvedores possam exercer formulários de checkout Eles são Luhn-válidos e passar verificações de rede para que o formulário se comporta exatamente como ele vai na produção, mas eles mapeiam para nenhuma conta real e nunca pode ser cobrado Eles são a coisa correta a usar em qualquer lugar que de outra forma você seria tentado a digitar um cartão real.

Qual a diferença entre o CVV e o número do cartão?

O número do cartão é o longo Número da Conta Primária que identifica a conta O CVV, CVC ou CID é o código de segurança curto, três dígitos para a maioria das redes e quatro para a American Express, impresso separadamente do número Esta ferramenta valida apenas o número do cartão; não verifica o código de segurança, que é verificado pelo emissor durante uma transação.

Este validador pode gerar cartões de crédito funcionais?

Não. Ele verifica apenas os números inseridos e não tem como produzir um número vinculado a uma conta ativa. Os números de amostra que ele oferece são os valores de teste publicados padrão que não chegam a nenhuma conta real. Gerar números para um cartão real não é algo que um validador estrutural possa fazer e não é algo que esta ferramenta tenta.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!