Python随机生成信用卡卡号代码
这段Python代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途。
""" 皮蛋编程(https://www.pidancode.com) 创建日期:2022/3/28 功能描述:Python随机生成信用卡卡号代码 """ from random import Random import copy visaPrefixList = [ ['4', '5', '3', '9'], ['4', '5', '5', '6'], ['4', '9', '1', '6'], ['4', '5', '3', '2'], ['4', '9', '2', '9'], ['4', '0', '2', '4', '0', '0', '7', '1'], ['4', '4', '8', '6'], ['4', '7', '1', '6'], ['4']] mastercardPrefixList = [ ['5', '1'], ['5', '2'], ['5', '3'], ['5', '4'], ['5', '5']] amexPrefixList = [['3', '4'], ['3', '7']] discoverPrefixList = [['6', '0', '1', '1']] dinersPrefixList = [ ['3', '0', '0'], ['3', '0', '1'], ['3', '0', '2'], ['3', '0', '3'], ['3', '6'], ['3', '8']] enRoutePrefixList = [['2', '0', '1', '4'], ['2', '1', '4', '9']] jcbPrefixList = [['3', '5']] voyagerPrefixList = [['8', '6', '9', '9']] def completed_number(prefix, length): """ 'prefix' is the start of the CC number as a string, any number of digits. 'length' is the length of the CC number to generate. Typically 13 or 16 """ ccnumber = prefix # generate digits while len(ccnumber) < (length - 1): digit = str(generator.choice(range(0, 10))) ccnumber.append(digit) # Calculate sum sum = 0 pos = 0 reversedCCnumber = [] reversedCCnumber.extend(ccnumber) reversedCCnumber.reverse() while pos < length - 1: odd = int(reversedCCnumber[pos]) * 2 if odd > 9: odd -= 9 sum += odd if pos != (length - 2): sum += int(reversedCCnumber[pos + 1]) pos += 2 # Calculate check digit checkdigit = int(((sum / 10 + 1) * 10 - sum) % 10) ccnumber.append(str(checkdigit)) return ''.join(ccnumber) def credit_card_number(rnd, prefixList, length, howMany): result = [] while len(result) < howMany: ccnumber = copy.copy(rnd.choice(prefixList)) result.append(completed_number(ccnumber, length)) return result def output(title, numbers): result = [] result.append(title) result.append('-' * len(title)) result.append('\n'.join(numbers)) result.append('') return '\n'.join(result) # # Main # generator = Random() generator.seed() # Seed from current time print("darkcoding credit card generator\n") mastercard = credit_card_number(generator, mastercardPrefixList, 16, 10) print(output("Mastercard", mastercard)) visa16 = credit_card_number(generator, visaPrefixList, 16, 10) print(output("VISA 16 digit", visa16)) visa13 = credit_card_number(generator, visaPrefixList, 13, 5) print(output("VISA 13 digit", visa13)) amex = credit_card_number(generator, amexPrefixList, 15, 5) print(output("American Express", amex)) # Minor cards discover = credit_card_number(generator, discoverPrefixList, 16, 3) print(output("Discover", discover)) diners = credit_card_number(generator, dinersPrefixList, 14, 3) print(output("Diners Club / Carte Blanche", diners)) enRoute = credit_card_number(generator, enRoutePrefixList, 15, 3) print(output("enRoute", enRoute)) jcb = credit_card_number(generator, jcbPrefixList, 16, 3) print(output("JCB", jcb)) voyager = credit_card_number(generator, voyagerPrefixList, 15, 3) print(output("Voyager", voyager))
输出结果如下:
darkcoding credit card generator Mastercard ---------- 5414776099395160 5361313694840170 5145774384378020 5448719998187530 5325734298341960 5454105150483380 5426189936830740 5421736117064890 5350016982233080 5201201815280420 VISA 16 digit ------------- 4929896480469590 4716516847978410 4916974409261390 4121498414385160 4929390048485560 4929456095462570 4716227162406180 4539885036183800 4929025657226540 4486244270565200 VISA 13 digit ------------- 4486797756930 4024007151320 4532330685390 4682109821040 4532973166110 American Express ---------------- 374357637124870 347571943273200 343017736486740 349531637436060 343121889988960 Discover -------- 6011741347300880 6011266102840680 6011219422610290 Diners Club / Carte Blanche --------------------------- 30054521517500 38594065598110 30037576652500 enRoute ------- 201457049826080 201487622825290 201475390854820 JCB --- 3562287733637440 3549267760113100 3542344701963090 Voyager ------- 869907150750170 869983691949320 869951427028720
以上代码在python3.9环境下测试通过,代码生成的信用卡卡号是根据信用卡编号规则生成,仅供学习代码使用。
相关文章