Ați ajuns la pagina de plată, gata să finalizați o comandă online. Tastați numărul cardului, apăsați enter și… eroare. Un mesaj roșu, frustrant: „Vă rugăm să introduceți un număr de card valid”. Verificați din nou și observați greșeala: un 6 în loc de un 5. Corectați, iar tranzacția este aprobată.
Dar cum a știut site-ul instantaneu că ați greșit? Are o listă cu toate cardurile valide din lume? A contactat banca într-o fracțiune de secundă? Răspunsul este mult mai elegant și se bazează pe un algoritm ingenios din anii ’60.
Toate cardurile de credit obișnuite folosesc un truc matematic simplu, conceput special pentru a prinde cele mai comune erori de tastare. Se numește algoritmul Luhn, brevetat în 1960 de cercetătorul IBM Hans Peter Luhn. Scheme similare de verificare a erorilor sunt prezente în coduri de bare, numere de urmărire a coletelor, conturi bancare și chiar în codurile ISBN ale cărților.
Algoritmul Luhn: anatomia unui număr de card
Dacă vă uitați la cardul din portofel, veți vedea că structura sa este mai complexă decât pare. Un număr de card are patru componente principale. Să folosim un card Visa ipotetic pentru a demonstra.
Prima cifră este identificatorul industriei: cardurile Visa încep mereu cu 4, iar cele Discover cu 6. Următoarele cinci până la șapte cifre identifică banca emitentă. Cifrele rămase, cu excepția ultimei, reprezintă numărul unic al contului dumneavoastră la acea bancă.
Dar ultima cifră, numită „cifră de control”, este specială. Aceasta este adăugată de emitenți pentru ca întregul număr să treacă un test matematic specific: algoritmul Luhn.
Iată cum funcționează algoritmul Luhn:
- Luați toate cifrele, mai puțin ultima (cifra de control);
- Începând din dreapta, dublați valoarea fiecărei a doua cifre;
- Însumați cifrele individuale ale rezultatelor obținute. De exemplu, dacă ați dublat un 7 și ați obținut 14, în acest pas veți aduna 1 + 4 = 5;
- Adăugați la total cifra de control (cea pe care ați ignorat-o la început).
Dacă rezultatul final nu este un multiplu de 10, numărul cardului este invalid.
Să testăm algoritmul pe un exemplu. Imaginați-vă că numărul cardului meu Visa este cel din imagine, dar l-am tastat greșit. Calculul ajunge la un total de 75, care nu este un multiplu de 10. Sistemul știe imediat că ceva nu este în regulă.
Emitenții de carduri calculează mai întâi pașii 1-3 pentru a determina ce cifră de control va face ca suma finală să fie un multiplu de 10. În exemplul nostru, cifra corectă ar fi trebuit să fie 3, deoarece 67 + 3 = 70.
O soluție simplă și puternică
Acest algoritm a devenit standardul în industrie datorită simplității și eficienței sale. Dacă tastați greșit o singură cifră, algoritmul Luhn va detecta eroarea. Dacă inversați din greșeală două cifre adiacente, o va detecta și pe aceasta (cu o singură excepție rară: inversarea 09 cu 90).
Anatomia secretă a cardului tău: Algoritmul Luhn
Ignorăm ultima cifră a cardului. Aceasta este cifra de control, pe care o vom folosi la final. În exemplul nostru, ignorăm cifra 3.
Pornind de la dreapta spre stânga, dublăm valoarea fiecărei a doua cifre. Celelalte cifre rămân neschimbate.
Adunăm toate cifrele. Dacă un număr dublat are două cifre (ex: 7 x 2 = 14), adunăm cifrele componente (1 + 4 = 5). Suma este 67.
Adunăm cifra de control (de la Pasul 1) la suma totală obținută (de la Pasul 3). Rezultatul trebuie să fie un multiplu de 10.
Aplicând algoritmul pe numărul de bază, obținem suma:
Rezultatul este un multiplu de 10, deci numărul trece validarea!
Dacă numărul era tastat greșit (suma 75):
Nu este un multiplu de 10, deci este invalid.
În anul 1969, matematicianul olandez Jacobus Verhoeff a arătat că aceste două tipuri de erori – o cifră greșită și inversarea a două cifre adiacente – constituie aproape 90% din toate greșelile de introducere a datelor. Verhoeff a creat un algoritm chiar mai puternic, care detecta toate erorile acoperite de Luhn, inclusiv inversarea 09/90. Deși era un triumf matematic, algoritmul său nu a fost adoptat pe scară largă, probabil pentru că era mai complex, iar algoritmul Luhn era deja implementat și funcționa „suficient de bine”.
De ce contează acest detaliu tehnic
Algoritmul Luhn economisește timp și bani. În timpul unei tranzacții, comerciantul trebuie să verifice dacă datele cardului sunt corecte, trimițând informațiile către un serviciu de validare. Acest proces durează și implică taxe de procesare. Ar fi o risipă de resurse să folosești acest serviciu complex pentru a corecta simple greșeli de tastare. Deoarece algoritmul Luhn necesită o putere de calcul minimă, computerul local poate face această primă verificare fără a contacta o terță parte.
Este important de reținut că trecerea testului Luhn nu garantează că numărul de card este real sau activ. În schimb, eșecul testului garantează că numărul este invalid. Algoritmul este doar o primă linie de apărare, care poate fi depășită de erori mai complexe sau de fraudatori. Aceste cazuri sunt prinse de serviciile de validare mai avansate.
Data viitoare când o pagină de checkout vă afișează acel mesaj de eroare, amintiți-vă: o bucată elegantă de matematică din anii ’60 tocmai v-a scutit de o bătaie de cap mai mare și a economisit timp și bani pentru toată lumea.












