Linguaggio C/C++ – Verifica validità carta di credito

Algoritmo

Per ogni circuito, la prima cifra del numero della carta è sempre la stessa; ad esempio per Diners e American Express è il 3, per Visa il 4, per MasterCard il 5 e così via; a ogni circuito di pagamento, poi, è associata anche la lunghezza del numero carta di credito, ad esempio 14 cifre per la carta Diners, 15 cifre per la American Express, 16 cifre per MasterCard e Visa.

Il numero dalla seconda alla sesta cifra identifica la banca che ha emesso la carta; il numero dalla settima alla penultima cifra il conto del titolare della carta; l’ultima cifra è una cifra di controllo (come per il codice fiscale) che viene generata tramite la formula di Luhn.

La formula di Luhn, dal nome del matematico Hans Peter che la inventò negli aani ’50 in IBM, è un algoritmo che implementa e verifica la validità di una sequenza di numeri sulla base del calcolo di una particolare cifra, chiamata appunto cifra di Lhun.

Illustriamo ora come funziona l’algoritmo di Lhun, considerando un numero di 16 cifre:

  1. Partendo da destra e spostandosi verso sinistra si moltiplicano per 2 tutte le cifre poste in posizione pari (posto 15, 13, 11, 9, 7, 5, 3, 1).
  2. Se il risultato di una moltiplicazione è a due cifre, esse vanno sommate tra loro.
  3. Le cifre di posto dispari si prendono così come sono.
  4. Si sommano le sedici cifre: il numero ottenuto è la cifra di Lhun.
  5. Se la somma ottenuta è un multiplo di 10, ovvero se il resto della divisione per 10 è 0, il numero della carta di credito risulta esatto.

Visite: 343

Pagine: 1 2 3 4