Python随机生成信用卡卡号的实现方法


Posted in Python onMay 14, 2015

本文实例讲述了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('\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
----------
5249241445603178
5474662131739768
5581517450441661
5588253309068355
5514774944030079
5122826749528287
5152966434002124
5268127987312292
5385676074198087
5330181839518097

VISA 16 digit
-------------
4539503803848378
4716973052847436
4556149936260376
4486565514724761
4556309354978160
4486560485591158
4916213564870669
4486704671699934
4532839100193192
4486613519985266

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

American Express
----------------
376197656730660
342421777432696
342896016604918
343458311286898
374543958196088

Discover
--------
6011676180456692
6011298953567876
6011699666196053

Diners Club / Carte Blanche
---------------------------
30066643308583
38302315481859
38251784096120

enRoute
-------
214935400146170
201435309964331
201450317314858

JCB
---
3506641780149880
3561856856065701
3508395818816022

Voyager
-------
869984254736122
869938197246102
869921075232782

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

Python 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
神经网络相关之基础概念的讲解
Dec 29 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
python绘制无向图度分布曲线示例
Nov 22 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
Java多线程实现四种方式原理详解
Jun 02 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
python安装mysql的依赖包mysql-python操作
Jan 01 Python
讲解Python中运算符使用时的优先级
May 14 #Python
讲解Python中的标识运算符
May 14 #Python
在Python中使用成员运算符的示例
May 13 #Python
总结Python中逻辑运算符的使用
May 13 #Python
解析Python中的二进制位运算符
May 13 #Python
整理Python中的赋值运算符
May 13 #Python
实例说明Python中比较运算符的使用
May 13 #Python
You might like
一个很不错的PHP翻页类
2009/06/01 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
python 编码规范整理
2018/05/05 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python运行异常管理解决方案
2020/03/09 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
为什么要使用servlet
2016/01/17 面试题
酒店员工检讨书
2014/02/18 职场文书
给老师的感谢信
2015/01/20 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python
Python中三种花式打印的示例详解
2022/03/19 Python