C Sharp ile TC Kimlik Numarası doğrulama algoritması
Güncelleme: 4.555 defa okundu
Konu: Programlama
İçindekiler
T.C. Kimlik numarasının geçerliliğini kontrol etmek için C# dilinde bir doğrulama fonksiyonu yazabiliriz. Bu fonksiyon, kimlik numarasının 11 haneli olup olmadığını kontrol ettikten sonra tek ve çift sıradaki hanelerin toplamlarını belirli matematiksel kurallara göre değerlendirir. Ayrıca 10. ve 11. hanelerin doğrulama algoritmasına uygunluğunu kontrol ederek sonuç olarak true veya false döndürür. Böylece hatalı ya da doğrulama kriterlerini karşılamayan kimlik numaralarını uygulama seviyesinde tespit edebiliriz. Ancak bu yöntem, numaranın resmî kayıtlarda gerçekten bir kişiye ait olduğunu değil, yalnızca biçimsel ve matematiksel doğrulama kurallarını sağlayıp sağlamadığını gösterir.
- private bool KimlikNoKontrol(string KimlikNo)
- {
- string Kontrol;
- int Sayi = 0;
- int TekTopla = 0;
- int CiftTopla = 0;
- int TekTopla7Kat = 0;
- int OnuncuKarakter = 0;
- int OnBirinciKarakter;
- if (KimlikNo.Length!=11 || KimlikNo.Substring(0,1)=="0")
- {
- return false;
- }
- for (int i = 0; i < 9; i++)
- {
- Sayi = Convert.ToInt16(KimlikNo.Substring(i, 1));
- if (i % 2 == 0) //tek karakteri bulmak için
- {
- TekTopla += Sayi;
- }
- else
- {
- CiftTopla += Sayi;
- }
- }
- TekTopla7Kat = TekTopla * 7; //tek sayilar toplamı 7 ile çarpılır
- OnuncuKarakter = (TekTopla7Kat - CiftTopla) % 10;
- OnBirinciKarakter = (TekTopla + CiftTopla + OnuncuKarakter) % 10;
- Kontrol = OnuncuKarakter.ToString() + OnBirinciKarakter.ToString();
- if (KimlikNo.Substring(9,2)==Kontrol)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
Metodun Kullanımı
- private void button1_Click(object sender, EventArgs e)
- {
- if (KimlikNoKontrol(textBox1.Text))
- {
- MessageBox.Show("Doğru");
- }
- else
- {
- MessageBox.Show("hatalı");
- }
- }