C# TcKimlik Algoritması

  • TC Kimlik numaraları 11 basamaktan oluşmaktadır.
  • İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
  • 11 hanelidir.
  • Her hanesi rakamsal değer içerir.
  • İlk hane 0 olamaz. 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 10. haneyi verir.
  • İlk 10 hanenin toplamından elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 11. haneyi verir.

 


private bool TcKimlikDogrulama(string pTCKimlik)
{
if (pTCKimlik.Length < 11)
return false;
else if (pTCKimlik.Substring(0, 1) == "0")
return false;

int toplam1 = Convert.ToInt32(pTCKimlik[0].ToString()) + Convert.ToInt32(pTCKimlik[2].ToString()) + Convert.ToInt32(pTCKimlik[4].ToString()) + Convert.ToInt32(pTCKimlik[6].ToString()) + Convert.ToInt32(pTCKimlik[8].ToString());
int toplam2 = Convert.ToInt32(pTCKimlik[1].ToString()) + Convert.ToInt32(pTCKimlik[3].ToString()) + Convert.ToInt32(pTCKimlik[5].ToString()) + Convert.ToInt32(pTCKimlik[7].ToString());

int sonuc = ((toplam1 * 7) - toplam2) % 10;

if (sonuc.ToString() != pTCKimlik[9].ToString())
return false;

int toplam3 = 0;
for (int i = 0; i < 10; i++)
toplam3 += Convert.ToInt32(pTCKimlik[i].ToString());

if ((toplam3 % 10).ToString() != pTCKimlik[10].ToString())
return false;

return true;
}