Algoritmo de Luhn em Python (Validar Cartão de Crédito)

Implemente o algoritmo de Luhn em Python para validar e gerar números de cartão de crédito para testes.

Introdução

O algoritmo de Luhn (ou Módulo 10) é usado mundialmente para validar números de cartão de crédito, IMEI e outros identificadores.

O Algoritmo

Percorre os dígitos da direita para a esquerda, dobrando cada segundo dígito. Se o dobro for maior que 9, subtrai-se 9. A soma total deve ser divisível por 10.

Implementação em Python

credit-card-generator.pypython
def luhn_validate(number: str) -> bool:
    digits = [int(d) for d in number if d.isdigit()]
    digits.reverse()
    
    total = 0
    for i, digit in enumerate(digits):
        if i % 2 == 1:
            digit *= 2
            if digit > 9:
                digit -= 9
        total += digit
    
    return total % 10 == 0

def generate_card(prefix: str, length: int = 16) -> str:
    import random
    number = prefix
    while len(number) < length - 1:
        number += str(random.randint(0, 9))
    
    # Calcular dígito verificador
    for check_digit in range(10):
        if luhn_validate(number + str(check_digit)):
            return number + str(check_digit)
    return number + "0"

# Gerar cartão Visa para testes
print(generate_card("4"))    # Visa
print(generate_card("51"))   # Mastercard

A função `luhn_validate` verifica se o número é válido. A função `generate_card` cria um número válido a partir de um prefixo de bandeira (Visa=4, Mastercard=51-55).

Não quer escrever código?

Use nossa ferramenta online gratuita para processar CREDIT-CARD-GENERATOR instantaneamente. Perfeito para testes rápidos.

Usar Ferramenta de CREDIT-CARD-GENERATOR Online