L'ultima cifra di un numero di carta non è casuale: è una cifra di controllo pensata apposta per intercettare il tipo di errore che si commette ricopiando a mano un numero lungo in un modulo di pagamento.
Come funziona l'algoritmo di Luhn
L'algoritmo scorre le cifre del numero da destra a sinistra, raddoppia ogni seconda cifra e, se il risultato supera 9, gli sottrae 9. Se il numero è stato inserito correttamente, la somma di tutte le cifre ottenute è un multiplo di 10.
Un'invenzione IBM degli anni '50, non di Visa o Mastercard
L'algoritmo prende il nome da Hans Peter Luhn, ricercatore IBM che lo brevettò nel 1954 come metodo generale per individuare errori di trascrizione in qualsiasi sequenza di cifre, senza legami diretti con le carte di pagamento in origine. I circuiti di pagamento lo adottarono in seguito perché è economico da calcolare e individua i due errori manuali più comuni: una cifra digitata male o due cifre adiacenti scambiate di posto.
Perché una verifica di Luhn valida non prova che la carta esista
La verifica di Luhn conferma solo la struttura matematica del numero, non l'esistenza di un conto reale dietro di esso. È banale generare milioni di numeri che superano questo controllo senza che nessuno sia collegato a una carta vera — ogni transazione reale deve quindi comunque passare dalla banca emittente per la verifica che conta davvero.
A cosa serve
- Individuare un numero di carta digitato male prima di inviare un modulo al server.
- Scartare rapidamente un refuso evidente durante l'inserimento manuale di un numero lungo.
- Capire esattamente cosa dimostra la verifica di Luhn e cosa no.
Riconoscere il circuito di pagamento dal numero (BIN)
Le prime cifre di un numero di carta formano il BIN (Bank Identification Number), che identifica il circuito ancora prima della verifica completa di Luhn. I numeri Visa iniziano con 4, quelli Mastercard con l'intervallo 51–55 o il più recente 2221–2720, e quelli American Express con 34 o 37. È grazie a questo prefisso che un modulo di pagamento può mostrare l'icona del circuito giusto mentre l'utente sta ancora digitando il numero.