Merhaba arkadaşlar. Yoğunluğumdan dolayı uzun zamandır bir yazı yazamıyordum. Bir süre düşündüm ne yazsam diye aklıma bu yazı geldi. Gelin Tc Kimlik No Doğrulama Algoritması nedir ona bakalım.
TC Kimlik No Doğrulama Algoritması
TC Kimlik numaraları, her Türk Vatandaşına doğumunda verilen 11 karakterli bir sayıdır ve benzersizdir. Yani aynı TC Kimlik numarasından bir tane daha yoktur. Ben önceleri hep bir sıraya göre gittiklerini düşünüyordum. Ancak bir gün ailemden iki kişinin TC Kimlik numaraların benzerlik gösterdiğini fark ettim. Bu benzerlik ilk 1,2,3 hane ile 7,8,9 hanelerin aynı olmasıydı. O gün aslında sıradan gitmediğini belirli bir algoritmaya göre verildiğini anlamıştım.
Şimdi gelelim bu TC No Doğrulama algoritmasına.
TC Kimlik No Doğrulama Algoritması
Bu algoritma 5 adımlı yani 5 şart var. Bu 5 şartın hepsine de uyulması gerekiyor.
1 – TC Kimlik Numaraları 11 karakter olmak zorundadır.
2 – Her hanesi bir rakam olmaldır.
3 – İlk hanesi 0 (sıfır) olamaz
4 – 1, 3, 5, 7, 9 basamaklarının toplamının 7 katından, 2, 4, 6, 8 basamaklarının toplamını çıkarttığımızda elde ettiğimiz sonucun 10’a bölümünden kalan sayı (MOD10) 10. basamaktaki sayıyı vermelidir.
5 – İlk 10 hanenin toplamından elde edilen sonucun 10’a bölümünden kalan sayı (MOD10) 11. basamaktaki sayıyı vermelidir.
Gördüğünüz gibi 5 şarttan biri tutmuyor ise ilgili TC Kimlik No doğru değildir yani Türkiye’de hiçbir vatandaşa verilmemiş bir sayıdır.
TC Kimlik No Doğrulama Algoritması C#
Ben C# ile yazılım geliştiren biri olduğumdan dolayı bu yazımda C# ile bu algoritmanın nasıl yapıldığını vermek istiyorum. Ben hali hazırda zaten bu algoritmayı projelerimde kullanıyorum.
public static string Kontrol(string TCno)
{
int Algoritma_Adim_Kontrol = 0, TekBasamaklarToplami = 0, CiftBasamaklarToplami = 0;
if (TCno.Length == 11) Algoritma_Adim_Kontrol = 1;
foreach (char chr in TCno) { if (Char.IsNumber(chr)) Algoritma_Adim_Kontrol = 2; }
if (TCno.Substring(0, 1) != "0") Algoritma_Adim_Kontrol = 3;
int[] arrTC = System.Text.RegularExpressions.Regex.Replace(TCno, "[^0-9]", "").Select(x => (int)Char.GetNumericValue(x)).ToArray();
for (int i = 0; i < TCno.Length; i++)
{
if (((i + 1) % 2) == 0)
if (i + 1 != 10) CiftBasamaklarToplami += Convert.ToInt32(arrTC[i]);
else
if (i + 1 != 11) TekBasamaklarToplami += Convert.ToInt32(arrTC[i]);
}
if (Convert.ToInt32(TCno.Substring(9, 1)) == (((TekBasamaklarToplami * 7) - CiftBasamaklarToplami) % 10)) Algoritma_Adim_Kontrol = 4;
if (Convert.ToInt32(TCno.Substring(10, 1)) == ((arrTC.Sum() - Convert.ToInt32(TCno.Substring(10, 1))) % 10)) Algoritma_Adim_Kontrol = 5;
if (Algoritma_Adim_Kontrol == 5)
return "TC No Doğru";
else
return "TC No Yanlış";
} Kodlarda gördüğünüz gibi ilk üç adımın kontrolü çok basit. Toplamda uyulması gereken 5 şart olduğundan dolayı Algoritma_Adim_Kontrol değişkenini, her adımda 1 arttırarak, şartı kontrol eden kodların çalışmasına göre test edilen TC Kimlik No‘sunun doğru olup olmadığına karar veriyoruz.
For döngüsünde index sayısına bir ekleyerek, modunu alıyoruz ve hangi basamakta olduğumuzu buluyoruz (1,3,5,7,9 yada 2,4,6,8). Eğer çift sayısı basamaklardaysak değeri, CiftBasamaklarToplami değişkenine, değilse TekBasamaklarToplami değişkenine ekliyoruz.
Bu işlemden sonra da zaten mod alma işlemleri ile 10. ve 11. karakterleri kontrol ettiriyoruz.
Algoritma_Adim_Kontrol değişkeni 5 değerini aldıysa test edilen TC Kimlik Numarası Doğrulama Algoritması geçilmiş demektir.
**
Ben burada işlemin tek seferde tamamlanması yoluna giderek işlemi yaptım. Ancak bu yöntemden farklı olarak Her adımı bağımsız olarak kontrol ettirebilir ve ilk hatada kontrolü durdurabiliriz.
TC Kimlik No Algoritması yazımda bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere.
Diğer yazılarıma gitmek isterseniz buraya tıklayabilirsiniz.
Sağlıcakla ve takipte kalın.
Bana destek olmak isterseniz bir kahve ısmarlayabilirsiniz veya diğer hesaplarımdan takip edebilirsiniz.
Bunu bilmeden önce herkesin TC numarasının sitelerce bilindiğini sanıyordum. Cahillik başa bela. Öğrendiğimde ufkum iki katına çıkmıştı. Eline sağlık mustafa
Peki yabancı birisi geldi yabanci kimlik no göremeyeceğiz onu da bu algoritmaya dahil etmek lazım
Onun için yabancıların bu vatandaşlık numaralarını hangi algoritma ile ürettiklerini bilmemiz ve kodlamamız gerekir.
Benim tc kimlik numarama hiç uymadı bu hesaplama sistemi
Selamlar. Kodları paylaşmadan önce onlarca TC numarası ile test ettim. 3, 4 aktif projemde kullanılıyor. Daha önce hiç sorun yaşandığını görmedim.
Bu kod hatalı. İnsanlara verip onlara da hata yaptırma
Selamlar. Kodları paylaşmadan önce onlarca TC numarası ile test ettim. 3, 4 aktif projemde kullanılıyor. Daha önce hiç sorun yaşandığını görmedim. Kaç TC NO ile test ettiniz?