Python随机生成信用卡卡号的实现方法
本文实例讲述了Python随机生成信用卡卡号的实现方法。分享给大家供大家参考。具体分析如下:
这段Python代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。
#!/usr/bin/python """ gencc:Asimpleprogramtogeneratecreditcardnumbersthatpassthe MOD10check(Luhnformula). Usefullfortestinge-commercesitesduringdevelopment. Copyright2003-2012GrahamKing Thisprogramisfreesoftware;youcanredistributeitand/ormodify itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby theFreeSoftwareFoundation;eitherversion2oftheLicense,or (atyouroption)anylaterversion. Thisprogramisdistributedinthehopethatitwillbeuseful, butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe GNUGeneralPublicLicenseformoredetails. YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftware Foundation,Inc.,59TemplePlace,Suite330,Boston,MA02111-1307USA """ #Differentnamingconvention,becausetranslatedfromPHP #pylint:disable=C0103 fromrandomimportRandom importcopy 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']] defcompleted_number(prefix,length): """ 'prefix'isthestartoftheCCnumberasastring,anynumberofdigits. 'length'isthelengthoftheCCnumbertogenerate.Typically13or16 """ ccnumber=prefix #generatedigits whilelen(ccnumber)<(length-1): digit=str(generator.choice(range(0,10))) ccnumber.append(digit) #Calculatesum sum=0 pos=0 reversedCCnumber=[] reversedCCnumber.extend(ccnumber) reversedCCnumber.reverse() whilepos<length-1: odd=int(reversedCCnumber[pos])*2 ifodd>9: odd-=9 sum+=odd ifpos!=(length-2): sum+=int(reversedCCnumber[pos+1]) pos+=2 #Calculatecheckdigit checkdigit=((sum/10+1)*10-sum)%10 ccnumber.append(str(checkdigit)) return''.join(ccnumber) defcredit_card_number(rnd,prefixList,length,howMany): result=[] whilelen(result)<howMany: ccnumber=copy.copy(rnd.choice(prefixList)) result.append(completed_number(ccnumber,length)) returnresult defoutput(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()#Seedfromcurrenttime print("darkcodingcreditcardgenerator\n") mastercard=credit_card_number(generator,mastercardPrefixList,16,10) print(output("Mastercard",mastercard)) visa16=credit_card_number(generator,visaPrefixList,16,10) print(output("VISA16digit",visa16)) visa13=credit_card_number(generator,visaPrefixList,13,5) print(output("VISA13digit",visa13)) amex=credit_card_number(generator,amexPrefixList,15,5) print(output("AmericanExpress",amex)) #Minorcards discover=credit_card_number(generator,discoverPrefixList,16,3) print(output("Discover",discover)) diners=credit_card_number(generator,dinersPrefixList,14,3) print(output("DinersClub/CarteBlanche",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))
运行结果如下:
darkcodingcreditcardgenerator Mastercard ---------- 5249241445603178 5474662131739768 5581517450441661 5588253309068355 5514774944030079 5122826749528287 5152966434002124 5268127987312292 5385676074198087 5330181839518097 VISA16digit ------------- 4539503803848378 4716973052847436 4556149936260376 4486565514724761 4556309354978160 4486560485591158 4916213564870669 4486704671699934 4532839100193192 4486613519985266 VISA13digit ------------- 4929905559973 4556870828321 4916868200216 4556189916056 4024007171180 AmericanExpress ---------------- 376197656730660 342421777432696 342896016604918 343458311286898 374543958196088 Discover -------- 6011676180456692 6011298953567876 6011699666196053 DinersClub/CarteBlanche --------------------------- 30066643308583 38302315481859 38251784096120 enRoute ------- 214935400146170 201435309964331 201450317314858 JCB --- 3506641780149880 3561856856065701 3508395818816022 Voyager ------- 869984254736122 869938197246102 869921075232782
希望本文所述对大家的Python程序设计有所帮助。