İlginizi Çekebilir
  1. Ana Sayfa
  2. C#
  3. TC Kimlik No Doğrulama Algoritması

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

TC Kimlik No Doğrulama Algoritması

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.

Yorum Yap

Yazar Hakkında

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım. Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir. Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır. Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.

Yorum Yap

Yorumlar (1)

  1. Alper Karaman

    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