TC Kimlik no doğrulama yaptığımız uygulamalarda kullanıcı boş geçebiliyor veya saçma tc kimlik numarası girebiliyorlar ama sizde işlemlerinizi tc kimlik no üzerinden yaptığınızda karışıklıklara sebep olabiliyor.
C# TC Kimlik No Doğrulama Algoritması
- TC Kimlik numaraları 11 basamaktan oluşmaktadır. İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
- 11 hanelidir.
- Her hanesi rakamsal değer içerir.
- İlk hane 0 olamaz.
- 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10′a bölümünden kalan, yani Mod10′u bize 10. haneyi verir.
- 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10′a bölümünden kalan, yani Mod10′u bize 11. haneyi verir.
C# Kodu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public static bool TcDogrulaV2(string tcKimlikNo) { bool returnvalue = false; if (tcKimlikNo.Length == 11) { Int64 ATCNO, BTCNO, TcNo; long C1,C2,C3, C4, C5,C6,C7,C8, C9,Q1,Q2; TcNo = Int64.Parse(tcKimlikNo); ATCNO = TcNo / 100; BTCNO = TcNo / 100; C1 = ATCNO % 10; ATCNO = ATCNO / 10 ; C2 = ATCNO % 10; ATCNO = ATCNO / 10 ; C3 = ATCNO % 10; ATCNO = ATCNO / 10 ; C4 = ATCNO % 10; ATCNO = ATCNO / 10 ; C5 = ATCNO % 10; ATCNO = ATCNO / 10 ; C6 = ATCNO % 10; ATCNO = ATCNO / 10 ; C7 = ATCNO % 10; ATCNO = ATCNO / 10 ; C8 = ATCNO % 10; ATCNO = ATCNO / 10 ; C9 = ATCNO % 10; ATCNO = ATCNO / 10 ; Q1 = ((10-((((C1+C3+C5+C7+C9)*3)+(C2+C4+C6+C8))%10))%10); Q2 = ((10-(((((C2+C4+C6+C8)+Q1)*3)+(C1+C3+C5+C7+C9))%10))%10); returnvalue = ((BTCNO * 100)+(Q1 * 10)+Q2 == TcNo); } return returnvalue; } |
Demo
Bu makalede C# dili içerisinde TC kimlik no doğrulama algoritmasını sizlerle paylaştım ama Javascript, Delphi, ASP.NET içerisinde bu doğrulamayı kullanabilirsiniz bu kaynaklara ilgilenebileceğiniz Diğer kaynaklar kısmından erişebilirsiniz. Ayrıca bu algoritmayı kullanmak istediğiniz dile göre dönüştürme işlemini kolayca yapabilirsiniz diye düşünüyorum.
TC kimlik no doğrulaması genellikle üye kayıt işlemlerinde yada üyenin üyeliğini doğrulamak açısından kullanılmaktadır.
📚 İlgilenebileceğiniz Diğer Kaynaklar
- Javascript TC Kimlik Doğrulama Algoritması
- ASP.NET TC Kimlik Bilgilerinin Doğrulaması İçin Devlet Servisi Kullanımı
- Delphi TC Kimlik Doğrulama Algoritması
- C# Switch Case Yapısı Kullanımı
- Sql Server C# türü karşılıkları
- C# 7.0 İle Beraber Gelecek Yenilikler
📚 Kaynaklar
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.
Yabancı kimlik numarası olan biri geldi diyelim onu napacağız.
Hangi ülkenin olduğunu kullanıcıdan elde ederek ona göre her biri için ayrı algoritma uygulamak gerekir.
Ykn yi bizim göç idaresi tanımlıyor nüfus ile ortak yapılıyor. Göçte çalışıyorum. ilk iki hanesi 99 onun dışında bir algoritması yok
Teşekkürler makale için
Rica ederim
Selamlar,
22. satırda C9’dan sonra yer alan “ATCNO = ATCNO / 10 ;” ibaresi artık o aşamadan sonra kullanılmadığından dolayı fazla.
Sürekli 10’a bölme yapmak, işlemci performansı açısından problem. bölme işlemi, işlemci komut setinde en fazla meşgul eden ve zaman alan işlem. String-Char array üzerinden dolaşmak daha performanslı olur
Selam Fatih,
Geri bildirimin için teşekkür ederim.
7 yıl önce bir projede oldukça ihtiyacımı karşıladı ve hastane yönetim sistemi gibi bir projede, 100.000’lerce işlemin gerçekleştiği projede sıkça kullandık. Gözle görülür bir performans kaybından bahsediyorsan o zaman karşılaşmadım. Bu işlem zaten bir ana fonksiyon gibi 100.000 transaction’ın tümünde kullanılan bir fonksiyon olmadığından sistemi yoracak bir performans kaybı gözlemleyebileceğini düşünmüyorum. Eğer farklı bir önerin olursa görmeyi veya duymayı çok isterim. Paylaşabilirsen öneri olarak makalede sunmak isterim.
Yıl 2020 halen en başarılı tc doğrulama algoritmalarından biri teşekkürler
Ben teşekkür ederim değerli görüşün için.
Şimdi buna bakarak mı yazcaz , bencilce ve komik?
Algoritmanın C# için yazılmış olanı makale içinde var Mouse’un orta kısmını kullanıp aşağı doru kaydırmayı denediniz mi!! yoksa direkt olarak yorum alanına gidecek şekilde sağdaki tarayıcı scroll’unumu kullandınız. Azıcık yapıcı yorum yapmaya çalışın. Sorunu beraber çözelim. Öörnek olarak kod çalışmıyor v.s. ile dönsen anlarım, birşeyler ayarlamaya çalışırız. Daha makalenin baş kısmını okuyup devamına göz atmadan mı yorum yazmaya meyillisiniz!
bir de çalışsa
merhaba benim biraz yardıma ihtiyacım olacak nasıl yardımcı olabilirsiniz .
text box tc no girince aşağıdaki text box lara kişinin adı soyadı doğum yeri adresi v.s. yazdırmak istiyorum mernis şifrem var .
yardımcı olursanız sevinirim kamu yararına kullanılacak (üçretsiz).
teşekkürler.