BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.

Structura unui cod de card


|S|BBB BB|NN NNNN NNN|C|
|_|____ __|___ _____ ____|_|
:             :                          :  :
:             :                          :  --> Cifra ce control
:             :                          :
:             :                          --> Numarul contului
:             :
:             --> Identificatorul emitentului
:
--> Tipul de card sau Major Industry Identifier (MII)

Numarul contului

Cifrele de la 7 la (n-1) din codul de card reprezinta identificatorul contului. Lungimea maxima a unui cod de card este de 19 cifre deci lungima maxima a numarului contului este de 12 cifre. Asta inseamna ca fiecare emitent dispune de un trilion de numere de cont posibile.

 


Algoritmul Luhn de validare al unui cod de card

Pas 1: Se inmulteste fiecare cifra din codul de card cu ponderea sa. Daca un card are un numar par de cifre, prima cifra are o pondere de 2, daca nu, cifra are o pondere de 1. Dupa aceea , ponderile cifrelor alterneaza 1,2,1,2.

Pas 2: Daca orice cifra are o valoare ponderata mai mare decat 9, se scade 9 din valoarea ei.

Pas 3: Se aduna toate valorile ponderate si se calculeaza restul impartirii la 10 (MODULO 10).

Pas 4: Un cod de card este valid daca rezultatul operatiei MODULO 10 este 0.

#include<iostream.h>
#include<string.h>

#include<conio.h>

#include<stdio.h>
int luhn(char *card)
{
       int n;
       n=strlen(card);
       int s;
       int tcard;
       int i;
       int p;
       if(n%2==0)
              p=2;
       else
              p=1;

       s=0;
       for(i=0;i<n;i++)
       {

              tcard=(card[i]-'0')*p;
              if(tcard>9)
                     tcard-=9;
              s+=tcard;
              p=3-p;
       }
       s%=10;
       if(s==0)
              return 1;
       else
              return 0;
}
void main()
{

       char *cc;
       cout<<"\ncititi codul:";gets(cc);

       if(strlen(cc)<=19)

       {

              if(luhn(cc))

                     cout<<"\ncod valid";

              else

                     cout<<"\ncod invalid";

       }

       else

              cout<<"\nlungime prea mare";

       getch();
}