TC kimlik Numarası Algoritması
Yazdığınız bir programda Tc kimlik numarası girilmesini istediniz. Ama girilen sayının kesin doğru olmasını istiyorsunuz. İşte aynı kredi kartlarında olduğu gibi kimlik numaralarında da bu tür bir doğrulama yapmak için bir algoritma kullanılmış. Kısaca 11 basamaktan TC kimlik numarasının ilk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı veririyor.
ALGORİTMA
- 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 bölümünden kalan, yani Mod10`u bize 10. haneyi verir.
- 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10`a bölümünden kalan, yani Mod10`u bize 11. haneyi verir.
Programcı mantığıyla anlatmak gerekirse,
TC Kimlik numaramız 11 basamaklı ve her bir rakamı kn ile ifade edelim
Değişkenler;
TC no: k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11 olsun.
tekler = k1+k3+k5+k7+k9
çiftler = k2+k4+k6+k8 (dikkat k10 yok!)
TC kimlik numarasının son iki basamağı (k10 ve k11) kontrol amaçlıdır.
Şimdi o kontrolü yapmak için aşağıdaki işlemler yapılır:
İşlemler;
c10 = ((tekler*7)-çiftler) mod10
c11=(k1+k2+k3+k4+k5+k6+k7+k8+k9+k10)mod10;
Eğer,
c10 = k10 (yani Tc nonun 10.basamağı) ve c11=k11 (yani son basamak)
ozaman bu TC kimlik numarası geçerlidir denir.
VS2008 C# ile yaptığım örnek Uygulama (Kaynak koduyla)
https://github.com/eozban/csharp/tree/master/TCKimlikNoDogrulama