The implementation method of Python randomly generating credit card number

Source: Internet
Author: User
Tags current time generator join naming convention in python


This article illustrates the implementation of Python's randomly generated credit card number. Share to everyone for your reference. The specific analysis is as follows:



This Python code generates the credit card number according to the credit card number generation rule randomly, can pass the verification, only for the study reference, please do not use for the illegal use, otherwise the consequence is conceited.

#! / 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))

The results are as follows:


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

Hope this article is helpful to everyone's Python programming.

Articles you may be interested in: Python's method of randomly generating mobile phone numbers and regular verification of mobile phone numbersPython's method of randomly generating mobile phone numbers and numbers Example of a method for creating a random phone number in Python 

Example of shooting function Python mobile phone number attribution query code

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.