RSS
 

TC Kimlik No Algoritması ve JavaScript Doğrulama Fonksiyonu

28 Eki

Her ne kadar rastgele gibi görünse de TC Kimlik Numarası belirli bir algoritma kullanılarak üretilmektedir. İlk 9 hanesi gerçek numara, son 2 karakteri ise kontrol amaçlı olarak kullanılan parite anahtarlarıdır.

WikiPedi‘de belirtilen doğrulama algoritması;

ilk 10 rakamın toplamının birler basamağı, 11. rakamı vermekte.

Ayrıca; 1, 3, 5, 7 ve 9. rakamın toplamının 7 katı ile 2, 4, 6 ve 8. rakamın toplamının 9 katının toplamının birler basamağı 10. rakamı; 1, 3, 5, 7 ve 9. rakamın toplamının 8 katının birler basamağı 11. rakamı vermektedir.

Yukarıdaki algoritmayı kullanarak ihtiyaç duyduğumda kullanılabileceğim basit bir T.C. Kimlik No Doğrulama fonksiyonu hazırladım.

function validateKimlikNo( KimlikNo ){
	KimlikNo = String(KimlikNo);
	if( ! KimlikNo.match(/^[0-9]{11}$/) )
		return false;

	pr1 = parseInt(KimlikNo.substr(0,1));
	pr2 = parseInt(KimlikNo.substr(1,1));
	pr3 = parseInt(KimlikNo.substr(2,1));
	pr4 = parseInt(KimlikNo.substr(3,1));
	pr5 = parseInt(KimlikNo.substr(4,1));
	pr6 = parseInt(KimlikNo.substr(5,1));
	pr7 = parseInt(KimlikNo.substr(6,1));
	pr8 = parseInt(KimlikNo.substr(7,1));
	pr9 = parseInt(KimlikNo.substr(8,1));
	pr10 = parseInt(KimlikNo.substr(9,1));
	pr11 = parseInt(KimlikNo.substr(10,1));

	if( (pr1+pr3+pr5+pr7+pr9+pr2+pr4+pr6+pr8+pr10) % 10 != pr11 )
		return false;
	if( ( (pr1+pr3+pr5+pr7+pr9)*7 + (pr2+pr4+pr6+pr8)*9 ) % 10 != pr10 )
		return false;
	if( ( (pr1+pr3+pr5+pr7+pr9)*8) % 10 != pr11 )
		return false;

	return true;
}
 

Cevap Yazın

 

 
  1. PHP ve SOAP ile TC Kimlik Numarası Doğrulama « Göktuğ ÖZTÜRK

    11 Kasım 2010 at 09:12

    [...] ve SOAP ile TC Kimlik Numarası DoğrulamaDaha önceden yazmış olduğum TC Kimlik No Algoritması ve JavaScript Doğrulama Fonksiyonu yazısında, T.C. Kimlik Numarası'nın kontrol algoritmasını JS fonksiyonuna dönüştürerek [...]

     
  2. ekrem

    21 Nisan 2011 at 03:41

    Private Sub Command1_Click()

    ‘ – T.C. Kimlik No. doğrulama algoritması -

    ‘ Aşağıdaki kontrolleri yapar, girilen kimlik numarası doğruysa ekrana ‘doğru’ mesajı çıkartır.

    ‘ 1. basamak 0 olmamalı.
    ‘ Toplam 11 basamaklı olmalı.
    ‘ 1. 3. 5. 7. ve 9. basamakların toplamının 7 katından; 2. 4. 6. ve 8. basamakların toplamı çıkarıldığında elde edilen sayının birler basamağı, kimlik numarasının 10. basamağına eşit olmalı.
    ‘ İlk 10 basamağın toplamından elde edilen sayının birler basamağı, kimlik numarasının 11. yani son basamağına eşit olmalı.

    ‘ Erhan Yazıcı / Mimax / 2008

    Dim sira(10) As Byte

    For i = 1 To 10
    sira(i) = Mid(Text1, i, 1)
    toplam = toplam + sira(i)
    Next

    If Left(Text1, 1) > 0 And Len(Text1) = 11 And Right(Text1, 2) = Right(7 * (sira(1) + sira(3) + sira(5) + sira(7) + sira(9)) – (sira(2) + sira(4) + sira(6) + sira(8)), 1) & Right(toplam, 1) Then
    MsgBox “doğru”
    End If

    End Sub

     
  3. Erhan Yazıcı

    25 Şubat 2012 at 14:58

    Private Sub Command1_Click().

    ‘ – T.C. Kimlik No. doğrulama algoritması -

    ‘ Aşağıdaki kontrolleri yapar, girilen kimlik numarası doğruysa ekrana ‘doğru’ mesajı çıkartır.

    ‘ 1. basamak 0 olmamalı.
    ‘ Toplam 11 basamaklı olmalı.
    ‘ 1. 3. 5. 7. ve 9. basamakların toplamının 7 katından; 2. 4. 6. ve 8. basamakların toplamı çıkarıldığında elde edilen sayının birler basamağı, kimlik numarasının 10. basamağına eşit olmalı.
    ‘ İlk 10 basamağın toplamından elde edilen sayının birler basamağı, kimlik numarasının 11. yani son basamağına eşit olmalı.

    ‘ Erhan Yazıcı / Mimax / 2008.

    Dim sira(10) As Byte.

    For I = 1 To 10.
    sira(i) = Mid(Text1, i, 1).
    toplam = toplam + sira(i).
    Next

    If Left(Text1, 1) > 0 And Len(Text1) = 11 And Right(Text1, 2) = Right(7 * (sira(1) + sira(3) + sira(5) + sira(7) + sira(9)) – (sira(2) + sira(4) + sira(6) + sira(8)), 1) & Right(toplam, 1) Then.
    MsgBox “doğru”
    End If

    End Sub

     
  4. TC Kimlik Numarası Algoritması ve Doğrulama Fonksiyonu | Fatih ÇELEN

    21 Ocak 2013 at 16:46

    [...] Kaynak : http://www.goktugozturk.com.tr/programlama/tc-kimlik-no-algoritmasi-ve-javascript-dogrulama-fonksiyo… [...]

     
  5. Uğurcan Kaya

    02 Şubat 2013 at 12:54

    Güzel bir paylaşım olmuş teşekkürler

     
  6. mehemt ali

    20 Mart 2013 at 15:48

    11111111110
    22222222220
    .
    .
    .
    99999999990

    Bu rakamlar TC kimlik no olmamasına rağmen geçiyor _?

     
    • Göktuğ ÖZTÜRK

      27 Mart 2013 at 15:10

      Maalesef sadece javascript ile girilen rakamlar için hash kontrolü yapılıyor. Bu nedenle belirttiğiniz rakamların kontrolden geçmeleri gayet normal. Bu gibi sıralı numaraları bir dizide tutarak, bunlardan biri girildiğinde negatif cevap vermesini sağlayabilirsiniz.
      Kontrolü js ile yaptığınız sürece 10 rasgele numaranın sonuna 11. karakter olarak 0-9 rakamlarını deneyerek geçerli bir T.C. numarası üretebilirsiniz.

      Bu fonksiyonun kullanım amacı insanların kendi T.C. numaralarını doğru vermelerini sağlamak değil, girdikleri T.C. No’da hata varsa, o hatayı farketmelerini sağlamak olmalı.

      Eğer kişilerin kendi T.C. numaraları doğru girmelerini gerektiren bir sisteminiz varsa, http://www.goktugozturk.com.tr/programlama/php-ve-soap-ile-tc-kimlik-numarasi-dogrulama/ yazısındaki webservisi kullanarak kişinin bilgilerini doğrulayabilirsiniz.