Sitemizde rahatsız edici reklamlar bulunmamaktadır. Adblock eklentisini kapatarak bize destek olabilirsiniz.

T.C. Kimlik no son iki hanenin algoritması – C# (C Sharp)

3 dk 14.586 0
T.C. Kimlik no son iki hanenin algoritması - C# (C Sharp)

Bildiğimiz gibi T.C. Kimlik no 11 haneden oluşur. Bu 11 hanenin bir takım algoritmaları bulunmaktadır. Hatırladığım kadarıyla İlk üç hanesi soy bilgisini verir 4-6 karakter arası aile bireylerinden oluşur gibi gibi vs. Geniş çaplı algoritmadan oluşan T.C. kimlik no halen güvenlik zafiyeti verebilmektedir. Aile bireylerinden herhangi birinin T.C. Kimlik no bilgisine ulaşan kötü niyetli bir vatandaş sizin T.C. Kimlik numaranıza ulaşmasını kolaylaştırır. Her neyse konuyu çok uzatmadan bugün ki örneğimize geçelim. Örneğimizde işlediğimiz 2 temel algoritma bulunmaktadır. Bu algoritma tam anlamıyla sonucu vermese de %99 oranında doğru sonuç vermektedir. Bu 2 temel algoritma T.C. kimlik numarasının son 2 hanesini bulmamıza yardımcı olacaktır. Yani 10. ve 11. haneyi 2 algoritma kullanarak elde edeceğiz. Öncelikle formülümüzü yazalım.

T.C. Kimlik numarasının hanelerine x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11 olarak belirtelim.

10. hane formülü;

(x1 + x3 + x5 + x7 + x9) x 7 + (x2 + x4 + x6 + x8) x 9 = x  (çıkan sonucun son hanesi yani birler basamağı T.C. kimlik numarasının 10. hanesini verir.)

11. hane formülü;

(x1 + x3 + x5 + x7 + x9) x 8 = x (çıkan sonucun son hanesi yani birler basamağı T.C. kimlik numarasının 11. hanesini verir.)

Algoritmaya göre kod yapımız ise aşağıdaki gibi olacak.

//textbox girilen sayılarının her bir hanesi için ayrı string oluşturalım
int sayi1 = Convert.ToInt32(textilk.Text.Substring(0, 1));
int sayi2 = Convert.ToInt32(textilk.Text.Substring(1, 1));
int sayi3 = Convert.ToInt32(textilk.Text.Substring(2, 1));
int sayi4 = Convert.ToInt32(textilk.Text.Substring(3, 1));
int sayi5 = Convert.ToInt32(textilk.Text.Substring(4, 1));
int sayi6 = Convert.ToInt32(textilk.Text.Substring(5, 1));
int sayi7 = Convert.ToInt32(textilk.Text.Substring(6, 1));
int sayi8 = Convert.ToInt32(textilk.Text.Substring(7, 1));
int sayi9 = Convert.ToInt32(textilk.Text.Substring(8, 1));

//10. hane hesaplaması
int islem1 = (sayi1 + sayi3 + sayi5 + sayi7 + sayi9) * 7;
int islem2 = (sayi2 + sayi4 + sayi6 + sayi8) * 9;
int x10 = islem1 + islem2;
text10.Text = x10.ToString();

//11. hane hesaplaması
int x11 = (sayi1 + sayi3 + sayi5 + sayi7 + sayi9) * 8;
text11.Text = x11.ToString();

//çıkan sonuçlardan son 2 hanesini başka textbox yazdıralım 
textson.Text = text10.Text.Substring(text10.Text.Length - 1) + text11.Text.Substring(text11.Text.Length - 1);

2 temel algoritmamızdan oluşan kod parçacığı bu kadardır. Örnek proje görüntüsü aşağıdaki gibidir.

 

Açık kaynak kodu ile sizlerle paylaşıyorum aşağıdan indirebilirsiniz.

Başarılar.

Kolay gelsin.

avatar

Mazlum Bora { borasign }

Software Developer