BluePink BluePink
XHost
Oferim servicii de instalare, configurare si monitorizare servere linux (router, firewall, dns, web, email, baze de date, aplicatii, server de backup, domain controller, share de retea) de la 50 eur / instalare. 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();
}