Yaptığımız uygulamalarda kullanıcıdan TC Kimlik numarasını istediğimiz zamanlarda girilen numaranın gerçek bir kişiye ait olup olmadığını kontrol etmemiz gerekir. Tüm vatandaşlara verilen TC Kimlik numaraları belli bir algoritmaya göre üretilir, biz de sayının bu algoritmaya uyup uymadığını test ederek numaranın geçerliliğini kontrol edebiliriz.

Nasıl bulunur?



Üzerinde basit bir pariteyle hata bulma özelliği bulunmaktadır; ilk 10 rakamın toplamının birler basamağı, 11. rakamı vermekte.

Ayrıca; 1, 3, 5, 7 ve 9. rakamın toplamının 7 katı ile 2, 4, 6 ve 8. rakamın toplamının 9 katının toplamının birler basamağı 10. rakamı; 1, 3, 5, 7 ve 9. rakamın toplamının 8 katının birler basamağı 11. rakamı vermektedir.

public bool TCNoKontrolu(string TCNo)
{
int[] TC = new int[11];
for (int i = 0; i < 11; i++)
{
string a = TCNo[i].ToString();
TC[i] = Convert.ToInt32(a);
}

int tekler = 0;
int ciftler = 0;

for (int k = 0; k < 9; k++)
{
if (k % 2 == 0)
tekler += TC[k];
else if (k % 2 != 0)
ciftler += TC[k];
}

int t1 = (tekler * 3) + ciftler;
int c1 = (10 - (t1 % 10)) % 10;
int t2 = c1 + ciftler;
int t3 = (t2 * 3) + tekler;
int c2 = (10 - (t3 % 10)) % 10;

if (c1 == TC[9] && c2 == TC[10])
return true;
else
return false;
}


Kaynak & Örnek Kullanım