视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python随机生成信用卡卡号的实现方法
2020-11-27 14:41:32 责编:小采
文档

本文实例讲述了Python随机生成信用卡卡号的实现方法。分享给大家供大家参考。具体分析如下:

这段Python代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。

#!/usr/bin/python
"""
gencc: A simple program to generate credit card numbers that pass the
MOD 10 check (Luhn formula).
Usefull for testing e-commerce sites during development.
Copyright 2003-2012 Graham King
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
# Different naming convention, because translated from PHP
# pylint: disable=C0103
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 = ((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('
'.join(numbers))
 result.append('')
 return '
'.join(result)
#
# Main
#
generator = Random()
generator.seed() # Seed from current time
print("darkcoding credit card generator
")
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
----------
5249241445603178
74662131739768
5581517450441661
5588253309068355
5514774944030079
5122826749528287
51529634002124
5268127987312292
5385676074198087
5330181839518097

VISA 16 digit
-------------
4539503803848378
4716973052847436
4556149936260376
4486565514724761
45563093978160
4486560485591158
49162135870669
4486704671699934
4532839100193192
4486613519985266

VISA 13 digit
-------------
4929905559973
4556870828321
4916868200216
45561916056
4024007171180

American Express
----------------
376197656730660
342421777432696
3426016604918
3434583112868
3743958196088

Discover
--------
6011676180456692
60112953567876
6011699666196053

Diners Club / Carte Blanche
---------------------------
300663308583
383023181859
38251784096120

enRoute
-------
2149300146170
2014353099331
201450317314858

JCB
---
35061780149880
3561856856065701
3508395818816022

Voyager
-------
8699842736122
869938197246102
869921075232782

希望本文所述对大家的Python程序设计有所帮助。

下载本文
显示全文
专题