C# TC Kimlik Numarası Kontrol ve Hesaplama Algoritması

Merhaba arkadaşlar, C#’ta TC Kimlik Numarasının nasıl hesaplandığını ve doğrulandığını paylaşmak istiyorum. Ben kendi projemde kullanma ihtiyacı duydum ve belki birinin işine yarar diye paylaşmak istedim.

C#ta fibonacci dizisi algoritması için aşağıdaki postu inceleyebilirsiniz.

C#’ta fibonacci dizisi yazdırma

Yeni Kimlik Kartlarının Güvenlik Önlemleri

Yeni kimlik kartlarının güvenlikleri hakkında da birçok şey duymuş olmalısınız. T.C. Kimlik Kartı, taklit edilemez olmakla beraber, tahrip ya da tahrif edildiğinde tespit edilmesine imkan veren görsel ve mantıksal güvenlik özelliklerine sahiptir. Kimlikler de artık teknolojiye uydu. Yeni çipli kimlik kartı başvurusu devam ediyor. Yeni nesil nüfus cüzdanı yerine geçecek olan çipli kimlik kartı, online randevu sistemi aracılığıyla sıra beklemeden alınabiliyor. Önemli bir de bilgi vermek isterim ki kimliği aldıktan sonra size verilen zarfını atmayın. Çünkü içerisinde yer alan hologram alında kişiye özel şifre yer alıyor. PIN’inizin kötü niyetli kişilerin eline geçmesini istemezsiniz 🙂

Kimlik Numarası Hesaplama ve Kontrol Etme

Unutmayın ki bu tam bir doğrulama değildir. Sadece girilen kimlik numarasının gerçekten bir TC Kimlik Numarası olup olmadığını kontrol eder. Kimlik numarasının kontrolünü yaptığınız kişiye ait olup olmadığını doğrulamak için T.C. İçişleri Bakanlığı Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü – Online Sorgulamalar sayfasını kullanabilirsiniz.

Kimlik numarasının hesaplanma algoritmasının devlet yetkilileri tarafından paylaşıldığını biliyor olabilirsiniz. Çalışma mantığı hayret ettirici derecede güzel aslında.

Bizim kimlik numaramız diye bildiğimiz 11 haneli numara aslında kimlik numarası değil desem ne dersiniz? Çünkü kimlik numarası hesaplanma algoritmasında aslında 11 hanenin ilk 9 hanesi kullanılmaktadır. Sonraki 2 hane sadece bu 9 hanenin kontrolünü yaptığımız kısımdır. Daha detaylı açıklayacak olursak; Kimlik numaranızın ilk 1. 3. 5. 7. ve 9. numarasının toplamının 7 katından, 2. 4. 6. ve 8. numarasının toplamını çıkartıyoruz ve 10 a bölüp kalanı alıyoruz. Bu rakam kimlik numaramızın 10. hanesini veriyor. Bu ilk 10 hanenin toplamının 10 a bölümünden kalan da 11. haneyi veriyor. Yani ilk toplama top1 dersek ikincisine de top2 dersek:
10. rakam = ((top1.7)-top2) % 10 —>> % işareti mod almak için kullanılır yani bu örnekte 10 a bölümünden kalan.
11. rakam = top1 + top2 + 10.rakam
İşte hesaplama bu kadar 🙂

C#’ta Kimlik Numarası kontrol etme

namespace TC_CitizenshipNumberCheck
{
    class Program
    {
        private static bool TCKimlik(string passaportOriginal)
        {
            string passaport = passaportOriginal.Substring(0, 9);
            int sum1 = Convert.ToInt32(passaport.Substring(0, 1));
            sum1 += Convert.ToInt32(passaport.Substring(2, 1));
            sum1 += Convert.ToInt32(passaport.Substring(4, 1));
            sum1 += Convert.ToInt32(passaport.Substring(6, 1));
            sum1 += Convert.ToInt32(passaport.Substring(8, 1));
            int res1 = sum1 * 7;
            int sum2 = Convert.ToInt32(passaport.ToString().Substring(1, 1));
            sum2 += Convert.ToInt32(passaport.ToString().Substring(3, 1));
            sum2 += Convert.ToInt32(passaport.ToString().Substring(5, 1));
            sum2 += Convert.ToInt32(passaport.ToString().Substring(7, 1));
            passaport = passaport + ((res1 - sum2) % 10).ToString();
            int top3 = (sum1 + sum2 + Convert.ToInt32(passaport.ToString().Substring(9, 1))) % 10;
            passaport = passaport + top3.ToString();
            if (passaport == passaportOriginal) return true;
            else return false;
        }
        static void Main(string[] args)
        {
            Console.Write("Lütfen hesaplamak istediğiniz TC Kimlik Numarasını girin :");
            Console.WriteLine(TCKimlik(Console.ReadLine().ToString()));
        }
    
    }
}

Sonuç:

 

Görüşmek üzere 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.