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.

 

</p>
<p>private bool TcKimlikDogrulama(string pTCKimlik)<br />
{<br />
if (pTCKimlik.Length &lt; 11)<br />
return false;<br />
else if (pTCKimlik.Substring(0, 1) == &quot;0&quot;)<br />
return false;</p>
<p>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());<br />
int toplam2 = Convert.ToInt32(pTCKimlik[1].ToString()) + Convert.ToInt32(pTCKimlik[3].ToString()) + Convert.ToInt32(pTCKimlik[5].ToString()) + Convert.ToInt32(pTCKimlik[7].ToString());</p>
<p>int sonuc = ((toplam1 * 7) - toplam2) % 10;</p>
<p>if (sonuc.ToString() != pTCKimlik[9].ToString())<br />
return false;</p>
<p>int toplam3 = 0;<br />
for (int i = 0; i &lt; 10; i++)<br />
toplam3 += Convert.ToInt32(pTCKimlik[i].ToString());</p>
<p>if ((toplam3 % 10).ToString() != pTCKimlik[10].ToString())<br />
return false;</p>
<p>return true;<br />
}</p>
<p>