Jump to content

Tc Kimlik No Algoritması


confidant1903

Recommended Posts

Merhaba arkadaşlar, daha önce paylaşıldı mı bilmiyorum ama forumda ben böyle bi konuya rastlamadım. Lafı fazla uzatmadan hemen konuya gireyim. TC numaraları tüm vatandaşlara verildi ama nasıl verildiğini hiç merak ettiniz mi? Bu numaraları birileri kafasından sallamadı. Belirli bir algoritmaya göre verildi. Tc no doğrulaması da bu algoritmayla yapılmakta ve hatalı tc noları bu şekilde bulunmaktadır. TC numaraları 11 haneden oluşur ve hiçbir zaman tek rakamla bitmez, bunu biliyoruz. Peki diğer doğrulama yöntemleri ne, hemen anlatayım:

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.

Peki bu algoritmayı nasıl programa dönüştürürüz? Birkaç programda bunu da gösterelim:

C#

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;
}

VB

Public Shared Function TcDogrulaV2(ByVal tcKimlikNo As String) As Boolean
     Dim returnvalue As Boolean = False
     If (tcKimlikNo.Length <> 11) Then
         Return returnvalue
     End If
     Dim TcNo As Long = Long.Parse(tcKimlikNo)
     Dim ATCNO As Long = (TcNo / 100)
     Dim BTCNO As Long = (TcNo / 100)
     Dim C1 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C2 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C3 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C4 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C5 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C6 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C7 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C8 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim C9 As Long = (ATCNO Mod 10)
     ATCNO = (ATCNO / 10)
     Dim Q1 As Long =((10-(((((((C1+C3)+C5)+C7)+C9)*3)+(((C2+C4)+C6)+C8))Mod 10))Mod 10)
     Dim Q2 As Long =((10-(((((((C2+C4)+C6)+C8)+Q1)*3)+((((C1+C3)+C5)+C7)+C9))Mod 10))Mod 10)
     Return ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo)
End Function

*alıntıdır*

Link to comment
Share on other sites

otomatik üretilmiyo ben ailemin tc kimlik numaralarını dikkatle analiz ettim bi algoritma yakaladım gibiysede cuk oturtamadım ilk 4 hanenin kayıtlı il ve ilçeyle ilgili olduğunu düşünüyorum .sonraki iki hane aile sırano (mesela bizim ailede 4 kişiyiz 0-3-6-9 şeklinde gidiyo) vs vs ...

Link to comment
Share on other sites

bu tür seylerin algoritması olur mu yaw. azcık mantıklı olmak lazım. burda onemli olan algoritma degil sınıflandırmadır. insanları sınıflandırıyorlar memleketlerine ilçelerine koylerine gore. ve bunlara gore sıra numarası veriliyor. oyle matemerit denklemine gore olur mu hiç. o zaman plakalardada bi algoritma arayın bakalım kesin cıkar birseyler. mesala samsunun plaka nosu 55. bunu nasıl buldular biliyor musun. samsumda 6 tane harf var buna 5 ekleyip 5 le carptılar. hemen formulunu yazayım sana :D cevrenizdeki 4 kişinin tc kimlik nosu buna uyuyor olabilir ama tamamen sizin gereksiz çalışmalarınızdan dolayıdır. allah akıl fikir versin

Link to comment
Share on other sites

Public Function TC_VER(SonTC as string)
TC_VER=val(SonTC)+1
End Function[/CODE]

:D Aslında bu kadar basit niye çok zorlamışlar ya :)

Link to comment
Share on other sites

bu tür seylerin algoritması olur mu yaw. azcık mantıklı olmak lazım. burda onemli olan algoritma degil sınıflandırmadır. insanları sınıflandırıyorlar memleketlerine ilçelerine koylerine gore. ve bunlara gore sıra numarası veriliyor. oyle matemerit denklemine gore olur mu hiç. o zaman plakalardada bi algoritma arayın bakalım kesin cıkar birseyler. mesala samsunun plaka nosu 55. bunu nasıl buldular biliyor musun. samsumda 6 tane harf var buna 5 ekleyip 5 le carptılar. hemen formulunu yazayım sana :) cevrenizdeki 4 kişinin tc kimlik nosu buna uyuyor olabilir ama tamamen sizin gereksiz çalışmalarınızdan dolayıdır. allah akıl fikir versin

plakayla ne alakası var ya :D

Plaka alfabetik sırayla verildi :)

Ama tc noların bi algoritması var.Ki bu algoritmayı çözemessiniz.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...