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 相关文章推荐
python多线程操作实例
Nov 21 Python
详解Python中__str__和__repr__方法的区别
Apr 17 Python
Python实现将xml导入至excel
Nov 20 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 Python
5道关于python基础 while循环练习题
Nov 27 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
ThinkPHP中关联查询实例
2014/12/02 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
在Python的Django框架中编写编译函数
2015/07/20 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python求绝对值的三种方法小结
2019/12/04 Python
python合并多个excel文件的示例
2020/09/23 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
电子商务毕业生求职信
2013/11/10 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
2015年共青团工作总结
2015/05/15 职场文书
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL