Luhn algoritması, Hans Peter Luhn ve IBM tarafından 1954 yılında geliştirilen bir algoritmadır. Aynı zamanda Luhn Check ve Mod Check olarak da isimlendirilmektedir.
Luhn algoritması 2 şekilde kullanılmaktadır.
- Verilen bir sayıyı Luhn algoritmasına göre hazırlamak (check digit değeri ile)
- Verilen bir sayıyı Luhn algoritmasına göre çözmek
Check digit Hesaplama
Check digit değeri check digit harici değerlerin toplamı üzerinden mod 10’a göre hesaplanan bir değerdir. Algoritması aşağıdaki şekildedir:
- En sağdaki digit Check digit değeridir. Check digit değerinden başlayarak 1.,3.,5….. değerleri 2 ile çarparız. (2.,4.,6. … değerler aynı kalır.)
- Eğer değerlerin toplamı 9’dan büyükse rakamlarını toplayıp rakamların toplamını buluruz.
- Nihai olarak elde edilen tüm rakamlar toplanır.
- Rakamların toplamı 9 ile çarpılır.
- Elde edilen rakamın son hanesi check digit değeridir.
Örnek
Kart Numarası
Kart no | 3 | 7 | 1 | 4 | 4 | 9 | 6 | 3 | 5 | 3 | 9 | 8 | 4 | 3 | X |
Adım 1 – Değerleri 2 ile çarp
2 ile çarp | 3 | 14 | 1 | 8 | 4 | 18 | 6 | 6 | 5 | 6 | 9 | 16 | 4 | 6 | X |
Adım 2 – elde edilen değerleri Topla
Değerleri Topla | 3 | 5 | 1 | 8 | 4 | 9 | 6 | 6 | 5 | 6 | 9 | 7 | 4 | 6 | X |
Adım 3 – Tüm değerleri Topla
3 + 5 + 1 + 8 + 4 + 9 + 6 + 6 + 5 + 6 + 9 + 7 + 4 + 6 = 79
Adım 4 – 9 ile Çarp
79 x 9 = 711
Sonuç
Check Digit Değeri =1.
Check digit değeri bulma ile ilgili aşağıdaki linkteki uygulamayı kullanabilirsiniz.
http://www.datageneratortools.com/card/calculator
Check digit Doğrulama
Verilen Sayının Luhn algoritmasına göre nasıl çözüldüğünü görselden görebilirsiniz.
- En sağdaki check digit değerinden başlayarak sola doğru 1.,3.,5… değerleri 2 ile çarparız.
- Eğer değerlerin toplamı 9’dan büyükse rakamlarını toplayıp rakamların toplamını buluruz.
- Nihai olarak elde edilen tüm rakamlar toplanır.
- Eğer tüm toplam 10’un katı ise ilgili kart numarası geçerlidir. 10’un katı değilse geçersiz bir numaradır.
Örnek
Kart numarası
Kart No | 3 | 7 | 1 | 4 | 4 | 9 | 6 | 3 | 5 | 3 | 9 | 8 | 4 | 3 | 1 |
Adım 1 – Değerleri 2 ile çarp
Değerleri Çarp | 3 | 14 | 1 | 8 | 4 | 18 | 6 | 6 | 5 | 6 | 9 | 16 | 4 | 6 | 1 |
Adım 2 – Değerleri Topla
Değerleri Topla | 3 | 5 | 1 | 8 | 4 | 9 | 6 | 6 | 5 | 6 | 9 | 7 | 4 | 6 | 1 |
Adım 3 – Tüm Değerleri Topla
3 + 5 + 1 + 8 + 4 + 9 + 6 + 6 + 5 + 6 + 9 + 7 + 4 + 6 + 1= 80
Adım 4 – Mod 10’a göre (80/10=8 tam bölünür.)
80 % 10 = 0
Sonuç:
Kart numarası Geçerli.
Eğer bir kart numarasını valide etmek isterseniz aşağıdaki linki kullanabilirsiniz.