Генератор номеров кредитных карт на JavaScript

Ответов: 0
Генератор номеров кредитных карт. Все сгенерированные номера кредитных карт удовлетворяют алгоритму Luhn, но не являются действительными!

Небольшой туториал

1. Создадим папку Генератор номеров кредитных карт
2. Создаём в ней файл под названием gencc.js
3. Отроем файл gencc.js через редактор и вставляем туда:
Код:
var visaPrefixList = new Array("4539", "4556", "4916", "4532", "4929", "40240071", "4485", "4716", "4");

var mastercardPrefixList = new Array("51", "52", "53", "54", "55");

var amexPrefixList = new Array("34", "37");

var discoverPrefixList = new Array("6011");

var dinersPrefixList = new Array("300", "301", "302", "303", "36", "38");

var enRoutePrefixList = new Array("2014", "2149");

var jcbPrefixList16 = new Array("3088", "3096", "3112", "3158", "3337", "3528");

var jcbPrefixList15 = new Array("2100", "1800");

var voyagerPrefixList = new Array("8699");

function strrev(str) {
   if(!str) return '';
   var revstr = '';
   for(i = str.length - 1; i >= 0; i--)
       revstr += str.charAt(i)
   return revstr;
}

/*
'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
*/
function completed_number(prefix, length) {

    var ccnumber = prefix;

    // generate digits

    while(ccnumber.length < (length - 1) ) {
        ccnumber += Math.floor(Math.random() * 10);
    }

    // reverse number and convert to int 

    var reversedCCnumberString = strrev( ccnumber );

    var reversedCCnumber = new Array();

    for(var i=0; i < reversedCCnumberString.length; i++ ) {
        reversedCCnumber[i] = parseInt( reversedCCnumberString.charAt(i) );   
    }

    // calculate sum    
    
    var sum = 0;
    var pos = 0;
    
    while ( pos < length - 1 ) {

        odd = reversedCCnumber[ pos ] * 2;
        if ( odd > 9 ) {
            odd -= 9;
        }

        sum += odd;

        if ( pos != (length - 2) ) {

            sum += reversedCCnumber[ pos +1 ];
        }
        pos += 2;
    }

    // calculate check digit

    var checkdigit = (( Math.floor(sum/10) + 1) * 10 - sum) % 10;
    ccnumber += checkdigit;

    return ccnumber;
    
}

function credit_card_number(prefixList, length, howMany) {

    var result = new Array();
    for (var i = 0; i < howMany; i++) {

        var randomArrayIndex = Math.floor(Math.random() * prefixList.length); 
        var ccnumber = prefixList[ randomArrayIndex ];
        result.push( completed_number(ccnumber, length) );
    }

    return result;
}
4. Сохраняем файл gencc.js
5. Создаём в этой же папке файл под названием gencc.html
6. Отроем файл gencc.html через редактор и вставляем туда:
Код:
<html>
<head>
<script src="gencc.js" type="text/javascript"></script>
</head>
<body>
<h3>VISA:</h3>
<script>
var visa = credit_card_number(visaPrefixList, 16, 1);
document.write(visa);
</script>
<h3>MasterCard:</h3>
<script>
var mastercard = credit_card_number(mastercardPrefixList, 16, 1);
document.write(mastercard);
</script>
<h3>American Express:</h3>
<script>
var amex = credit_card_number(amexPrefixList, 16, 1);
document.write(amex);
</script>
<h3>Discover:</h3>
<script>
var discover = credit_card_number(discoverPrefixList, 16, 1);
document.write(discover);
</script>
<h3>Diners Club:</h3>
<script>
var diners = credit_card_number(dinersPrefixList, 14, 1);
document.write(diners);
</script>
<h3>enRoute:</h3>
<script>
var enroute = credit_card_number(enRoutePrefixList, 15, 1);
document.write(enroute);
</script>
<h3>JCB 16 digit:</h3>
<script>
var jcb16 = credit_card_number(jcbPrefixList16, 16, 1);
document.write(jcb16);
</script>
<h3>JCB 15 digit:</h3>
<script>
var jcb15 = credit_card_number(jcbPrefixList15, 15, 1);
document.write(jcb15);
</script>
<h3>Voyager:</h3>
<script>
var voyager = credit_card_number(voyagerPrefixList, 15, 1);
document.write(voyager);
</script>
</body>
</html>
7. Сохраняем файл gencc.html
8. Отрываем файл gencc.html через любой браузер с поддержкой JavaScript