Luhn Algoritması ile Kredi Kartı Numarası Kontrolü

Algoritma nasıl çalışıyor?

Kredi Kartı Numarası (Account Number) 7992739871 olsun, bir sayı atlanarak çift numaralılar 2 ile çarpılıyor. Çıkan sayı 9'dan küçükse aynen yazılıyor, eğer büyük ise çarpım sonucu elde edilen sayının haneleri toplanıyor. Örneğin 3 x 6 = 18 değeri 9'dan büyük olduğu için hane toplamı 1+8 = 9 alınıyor. Sonra en son satırda ise haneler toplanıyor, 7+9+9+4+7+6+9+7+7+2 = 67 elde ediyor, Bu toplam değeri Mod 10'a göre 0 ise kredi kartı geçerlidir, burada Mod 10'a göre 7 olduğundan son rakam 3 olabilir. Böylece toplam 70 edecek, mod 10'a göre kalan 0 olacaktır.


Örneğimizde 7992739871X 
burada X değeri 3 olacaktır. Birçok yöntem ile son doğrulama hanesi olan 3 hesaplanabilir, diğer yöntemleri kaynaklar kısmından inceleyebilirsiniz.

ListBox nesnesi ekleyip ID değerine Lbox veriyoruz.
TextBox nesnesi ekleyip ID değerine txtKredi ismini veriyoruz.
Button nesnesi ekleyip ID değerine btnKontrol ismini veriyoruz.



protected void btnKontrol_Click(object sender, EventArgs e)
    {
        string kredi = txtKredi.Text;
           int genelToplam = 0;
        for (int i=0; i<kredi.Length; i++)
        {
            int carpim = 1;
            int toplam =0;
 
            if (i % 2 == 1)
            {
                // LBox.Items.Add(kredi[i].ToString());
                carpim = int.Parse(kredi[i].ToString()) * 2;
                LBox.Items.Add(carpim.ToString());
                if (carpim > 9)
                {
                    string carpimStr = carpim.ToString();
                    toplam = int.Parse(carpimStr[0].ToString()) +
                        int.Parse(carpimStr[1].ToString());
                    genelToplam += toplam;
 
                } //if 
                else genelToplam += carpim;
            }//if i%2
            else {
                genelToplam += int.Parse(kredi[i].ToString());
            }
            
 
        }//for
        LBox.Items.Add("Genel Toplam " + genelToplam);
        int dogrulama = genelToplam % 10;
        int sonRakam = 10 - dogrulama;
        LBox.Items.Add("Sonrakam "+sonRakam);
        LBox.Items.Add("Doğrulama "+dogrulama);
        
    }



Mutlu kodlamalar,
Oğuzhan TAŞ
Kasım, 2016
 
Bookmark and Share