Kısa tarih bilgisi ile bir alman olan Hans Peter Luhn abimiz tarafından 1954 yılında dakte edilen sayıların yanlış girilip girilmediğini kontrol amaclı geliştirilmiş. IMEI – Kredikarti gibi sayıların son karakterinde doğrulama kodu olarak kullanılır.
1. Girilen karakter sayısı 16 olmak zorundadır.
2. Bir değişkene indisleri çift olan sayıların iki katlarının basamak toplamlarının, toplamları aktarılmalıdır.
3. Diğer bir değişkene ise indisleri tek olan sayıların toplamları aktarılmalıdır.
4. Son olarak da iki değişkenin toplamının 10 a bölünüp bölünmediğini kontrol edeceğiz.
private bool KrediKartiDogrulama(string pKartNo)
{
int toplam = 0;
for (int i = 0; i < 16; i++)
{
int sayi = Convert.ToInt32(pKartNo[i].ToString());
if (i % 2 == 0)
{
sayi = sayi * 2;
if (sayi.ToString().Length == 2)
sayi = Convert.ToInt32(sayi.ToString().Substring(0, 1)) + Convert.ToInt32(sayi.ToString().Substring(1, 1));
}
toplam += sayi;
}
if (toplam % 10 == 0)
return true;
else
return false;
}