TC Kimlik Numarası algoritması, Türkiye Cumhuriyeti vatandaşlarına verilen 11 haneli kimlik numarasının nasıl oluşturulduğunu belirleyen matematiksel bir kurallar bütünüdür. Bu numara, Türk vatandaşlarının kimliklerinin doğrulanması, işleme alındığı kurumlar tarafından kişisel bilgilerin takibi ve benzeri amaçlarla kullanılır. TC Kimlik Numarası'nın oluşturulması ve doğrulaması belirli kurallara dayanır.
İşte TC Kimlik Numarası algoritması hakkında temel bilgiler:

1. TC Kimlik Numarasının Yapısı


TC Kimlik Numarası 11 hanelidir ve her hanenin belirli bir kuralı vardır:
  • 1. Haneden 10. Haneye kadar: Bu 10 hane, kişinin rastgele atanmış sayılardır. Ancak bu sayılar belirli kurallara göre hesaplanır.
  • 11. Hane: Son hane, algoritma ile hesaplanan bir kontrol haneleridir. Yani bu hane, diğer sayılara bağlı olarak matematiksel bir işlemle belirlenir.

2. Algoritma


TC Kimlik Numarası oluşturulurken, belirli matematiksel kurallara uyulması gerekir. Aşağıda, bu kurallar detaylı bir şekilde açıklanmıştır:
  • Birinci Kural: İlk hane 0 olamaz. Yani TC Kimlik Numarası'nın ilk rakamı 0'dan farklı bir rakam olmalıdır.
  • İkinci Kural: İlk 10 rakamdan, 1. ve 3. haneler, 5. ve 7. haneler gibi grup numaralarına göre bir dizi hesaplama yapılır.

10. Hane Hesaplaması:


Bu hane, bir tür toplam kullanılarak hesaplanır:
  • 1, 3, 5, 7 ve 9. hanelerin toplamı ile 2, 4, 6, 8. hanelerin toplamı arasındaki fark alınır.

11. Hane Hesaplaması:


Bu hane de, önceki 10 hane kullanılarak hesaplanır:
  • İlk 10 hanenin toplamı belirli bir modül ile bölünür ve bu modül sonucunda bir hane elde edilir.



3. Son Hane Kontrolü


Son rakam, bu 10 hanelik sayının doğruluğunu kontrol eder. Bu, diğer hanelerle birleştirildiğinde hatalı bir TC Kimlik Numarası olmasını engelleyen bir kontrol yöntemidir.

4. TC Kimlik Numarası Doğrulama


Bir TC Kimlik Numarası'nın geçerli olup olmadığını doğrulamak için kullanılan yöntemler şunlardır:
  • 11 haneli olmalıdır.
  • İlk rakamı 0 olmamalıdır.
  • Tüm diğer kuralların geçerli olup olmadığı kontrol edilmelidir.

5. Kullanım Alanları


TC Kimlik Numarası, şu amaçlarla kullanılabilir:
  • Kamu ve özel sektördeki kurumlar tarafından bireylerin kimliklerini doğrulamak.
  • Sağlık, bankacılık, sigorta işlemleri gibi birçok alanda kişisel verilerin güvenli bir şekilde işlenmesi.
  • Devletin dijital hizmetlerine erişim.
TC Kimlik Numarası, bir kişinin kimlik bilgisinin doğruluğunu sağlamak amacıyla matematiksel bir kontrolle birlikte, Türkiye Cumhuriyeti vatandaşlarına ve bazı yabancılara atanmış özel bir numaradır.



Doğrulama yapmak için Örnek kodlar :

VB.Net İçin Örnek Kod :

Public Function ValidateTC(tc As String) As Boolean
    ' TC Kimlik Numarası 11 haneli olmalıdır
    If tc.Length <> 11 Then
        Return False
    End If

    ' İlk hane 0 olamaz
    If tc(0) = "0"c Then
        Return False
    End If

    Dim toplam1 As Integer = 0
    Dim toplam2 As Integer = 0

    ' İlk 10 haneyi topla
    For i As Integer = 0 To 8 Step 2 ' 1, 3, 5, 7, 9. haneleri
        toplam1 += Integer.Parse(tc(i).ToString())
    Next

    For i As Integer = 1 To 8 Step 2 ' 2, 4, 6, 8. haneleri
        toplam2 += Integer.Parse(tc(i).ToString())
    Next

    ' 10. haneyi kontrol et
    Dim onuncuHane As Integer = (toplam1 * 7 - toplam2) Mod 10
    If Integer.Parse(tc(9).ToString()) <> onuncuHane Then
        Return False
    End If

    ' 11. haneyi kontrol et
    Dim toplam As Integer = 0
    For i As Integer = 0 To 9
        toplam += Integer.Parse(tc(i).ToString())
    Next

    If toplam Mod 10 <> Integer.Parse(tc(10).ToString()) Then
        Return False
    End If

    Return True
End Function



C# için Örnek Kod :

public bool ValidateTC(string tc)
{
    // TC Kimlik Numarası 11 haneli olmalıdır
    if (tc.Length != 11)
        return false;

    // İlk hane 0 olamaz
    if (tc[0] == '0')
        return false;

    int toplam1 = 0;
    int toplam2 = 0;

    // İlk 10 haneyi topla
    for (int i = 0; i < 9; i += 2) // 1, 3, 5, 7, 9. haneleri
    {
        toplam1 += int.Parse(tc[i].ToString());
    }

    for (int i = 1; i < 8; i += 2) // 2, 4, 6, 8. haneleri
    {
        toplam2 += int.Parse(tc[i].ToString());
    }

    // 10. haneyi kontrol et
    int onuncuHane = (toplam1 * 7 - toplam2) % 10;
    if (int.Parse(tc[9].ToString()) != onuncuHane)
        return false;

    // 11. haneyi kontrol et
    int toplam = 0;
    for (int i = 0; i < 10; i++)
    {
        toplam += int.Parse(tc[i].ToString());
    }

    if (toplam % 10 != int.Parse(tc[10].ToString()))
        return false;

    return true;
}


PHP İçin Örnek Kod:

function validateTC($tc)
{
    // TC Kimlik Numarası 11 haneli olmalıdır
    if (strlen($tc) != 11)
        return false;

    // İlk hane 0 olamaz
    if ($tc[0] == '0')
        return false;

    $toplam1 = 0;
    $toplam2 = 0;

    // İlk 10 haneyi topla
    for ($i = 0; $i < 9; $i += 2) { // 1, 3, 5, 7, 9. haneleri
        $toplam1 += (int)$tc[$i];
    }

    for ($i = 1; $i < 8; $i += 2) { // 2, 4, 6, 8. haneleri
        $toplam2 += (int)$tc[$i];
    }

    // 10. haneyi kontrol et
    $onuncuHane = ($toplam1 * 7 - $toplam2) % 10;
    if ((int)$tc[9] !== $onuncuHane)
        return false;

    // 11. haneyi kontrol et
    $toplam = 0;
    for ($i = 0; $i < 10; $i++) {
        $toplam += (int)$tc[$i];
    }

    if ($toplam % 10 !== (int)$tc[10])
        return false;

    return true;
}