2011-10-22 8 views
18

Numer referencyjny: Luhn AlgorithmCzy algorytm Luhna działa we wszystkich popularnych kartach kredytowych? (Discover, Visa, Mastercard, Amex)

Algorytm Luhna to świetny sposób, aby szybko sprawdzić, czy użytkownik prawidłowo wpisał kod CC#.

Obawiam się jednak, że może istnieć podzbiór głównych kart kredytowych, które nie używają liczb przyjaznych algorytmowi Luhna.

Mam logowania w naszej aplikacji, aby wykryć wzorzec we wszystkich odrzuceniach algorytmu Luhn, ale wolałbym wiedzieć ostatecznie.

Odpowiedz

11

Prawie.

China UnionPay i jedna karta Diners Club (enRoute) nie używają sprawdzania Luhn. (LazyOne’s answer jest źle o Diners Club.)

Prawie wszyscy inni.

Powołując Wikipedia's 'Bank card' page:

Nie walidacji w ogóle:

  • Diners Club Enroute
  • China UnionPay

zatwierdź Luhna 2:

  • Amerykanina mi Xpress
  • Bankcard
  • Diners Carte Blanche
  • Diners Club
  • Diners Club Stany Zjednoczone & Kanada
  • Discover Card
  • InstaPayment
  • JCB
  • Laser
  • Maestro
  • Dankort
  • MasterCard
  • Solo
  • Przełącznik
  • Visa
  • Visa Electron
+1

Kluczową frazą początkowego pytania są "karty głównego nurtu" ... nieparzysty podzbiór China Unionpay i Diners Club enRoute wydaje się być poza "głównym nurtem" i dlatego LUHN sprawdzi "główne karty"/ –

+0

Tak, oraz są to dwie bardzo popularne karty kredytowe, wprawdzie nie w Stanach Zjednoczonych. Dziękuję za twój wkład; życzę miłego dnia. –

+0

Strona Wiki zmieniła się od czasu Twojej odpowiedzi. UnionPay wydaje się teraz również używać algorytmu Luhna do sprawdzania numerów kart. Nie mam innego źródła niż artykuł w Wikipedii, gdzie został zmieniony w marcu 2015 roku. – reSPAWNed

5

Tak - działa dla wszystkich popularnych typów kart.

Mam niestandardową klasę PHP do obsługi danych karty, która została skompilowana z różnych "sprawdzonych numerów kart" i podobnych funkcji z kilku języków programowania + informacje z Wikipedii & niektóre systemy przetwarzania płatności. Z powodzeniem sprawdza numery kart testowych (każdy system płatności ma kilka takich numerów) dla tych typów kart:

  • VISA debetowych/kredytowych
  • VISA Electron
  • VISA Delta
  • MasterCard
  • AMEX
  • Maestro
  • Przełącznik
  • Solo
  • Diners Club
  • Discover
  • JCB
+2

To nie jest poprawne. Diners Club enRoute nie używa Luhna. –

3

Kontrola LUN działa na większości kart kredytowych. Jest to system kontrolny z modułem 10, który gwarantuje, że numer karty został dokładnie odczytany/zapisany (pasek magnetyczny, terminal wirtualny lub ręczny wpis w dawnych czasach ręcznego imprinterera).

W czasach ręcznego wprowadzania danych, te systemy kontrolne zostały użyte w celu upewnienia się, że klucze takie jak system numerowania podbiórki UPS zostały dokładnie wprowadzone (cyfra kontrolna 7 modułu).

Stosuje się go nawet w systemach kodów kreskowych, takich jak kod 128, który potrzebuje kodu o długości 103 modusa dodanego do zakodowanego ciągu danych, aby sprawdzić, czy kod został odczytany prawidłowo.

+0

Jeśli obie pozostałe odpowiedzi zgadzają się, że to nie działa dla wszystkich kart, które prawdopodobnie trzeba zmienić pierwsze zdanie. –