Göktuğ ÖZTÜRK
28Eki/101

TC Kimlik No Algoritması ve JavaScript Doğrulama Fonksiyonu

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;
}
Yorumlar (1) Geri izlemeler (1)
  1. 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


Yorum Bırakın

(required)