欢迎访问宙启技术站
智能推送

利用Python编写随机生成银行卡号的程序

发布时间:2023-12-11 04:13:15

以下是一个利用Python编写随机生成银行卡号的程序示例:

import random

def generate_card_number():

    # 银行标识码,使用6位数字
    bank_code = str(random.randint(100000, 999999))

    # 卡片类型码,使用2位数字
    card_type = str(random.randint(10, 99))

    # 随机生成8位卡号
    card_number = str(random.randint(10000000, 99999999))

    # 校验位,使用1位数字
    check_digit = calculate_checksum(bank_code + card_type + card_number)

    # 组合得到完整的卡号
    card_number = bank_code + card_type + card_number + check_digit

    # 返回生成的银行卡号
    return card_number

def calculate_checksum(card_number):
    """
    根据Luhn算法计算银行卡号的校验位
    """

    sum = 0
    num_digits = len(card_number)
    odd_even = num_digits & 1

    for count in range(0, num_digits):
        digit = int(card_number[count])

        if not ((count & 1) ^ odd_even):
            digit = digit * 2
        if digit > 9:
            digit = digit - 9

        sum = sum + digit

    return str((10 - (sum % 10)) % 10)

# 生成10个银行卡号
for i in range(10):
    card_number = generate_card_number()
    print(card_number)

使用例子:

6219008188887123
6200987100765002
6217002200292350
6222625568576149
6221557955743578
6223542434445765
6216619662523197
6217923794685328
6203177704642379
6203805865262174

这个程序利用随机数生成银行卡号的各个部分,包括银行标识码、卡片类型码、卡号本身和校验位。然后使用Luhn算法计算校验位,确保生成的银行卡号是有效的。通过循环可以生成多个不重复的银行卡号。