Bu rehberde, Python programlama dilini kullanarak geçerli TC Kimlik Numaraları nasıl oluşturulacağını adım adız açıklayacağız. TC Kimlik No algoritması, belirli matematiksel kurallara dayanır ve bu kurallara uygun numaralar üretmek için bir Python fonksiyonu geliştireceğiz.

TC Kimlik No Algoritması Nedir?

TC Kimlik Numarası 11 haneden oluşur ve şu kurallara uyar:

  1. İlk hane sıfır olamaz
  2. İlk 10 hanenin toplamının birler basamağı, 11. haneyi verir
  3. İlk 9 hanenin 7 katı ile 10. hanenin farkı, 10. haneyi verir
  4. Herhangi bir rakamdan oluşan aynı sayılar (11111111111 gibi) geçersizdir

Python ile TC Kimlik No Üretme Kodu

Aşağıda, yukarıdaki kurallara uygun rastgele TC Kimlik Numaraları üreten bir Python fonksiyonu bulunmaktadır:

 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
30
31
32
33
34
35
import random

def generate_tc_number() -> str:
    """
    Geçerli bir TC Kimlik Numarası üretir.
    
    Returns:
        str: 11 haneli TC Kimlik Numarası
    """
    # İlk 9 haneyi oluştur (1-9 arasında rastgele 5 haneli sayı)
    random_pool1 = random.randint(10000, 99999)
    # Son 4 hane için rastgele 4 haneli sayı
    random_pool2 = random.randint(1000, 9999)

    # Sayıları string'e çevir
    random_pool1_str = str(random_pool1)
    random_pool2_str = str(random_pool2)

    # İlk 5 ve son 4 hanenin rakamlarını topla
    k1_sum = sum(int(digit) for digit in random_pool1_str)
    k2_sum = sum(int(digit) for digit in random_pool2_str)

    # TCKN'nin ilk 9 hanesini oluştur (çapraz birleştirme yöntemiyle)
    tckn = ''.join(random_pool1_str[i] + random_pool2_str[i] for i in range(4))
    tckn += random_pool1_str[4]  # 9. haneyi ekle

    # 10. ve 11. haneleri hesapla
    digit_10 = (k1_sum * 7 - k2_sum) % 10
    if digit_10 < 0:  # Negatif sayı olmaması için
        digit_10 += 10
    
    digit_11 = (k1_sum + k2_sum + digit_10) % 10

    # Tüm haneleri birleştir ve döndür
    return f"{tckn}{digit_10}{digit_11}"

Kullanım Örnekleri

Temel Kullanım

# Tek bir TC Kimlik No üretme
tc_no = generate_tc_number()
print(tc_no)  # Örnek çıktı: "12345678901"

Birden Fazla TC Kimlik No Üretme

# 5 adet TC Kimlik No üretme
for _ in range(5):
    print(generate_tc_number())

Django’da Kullanım

# Django modeli için örnek kullanım
from django.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=100)
    tc_identity = models.CharField(max_length=11, unique=True)
    
    @classmethod
    def create_with_tc_number(cls, name):
        return cls.objects.create(
            name=name,
            tc_identity=generate_tc_number()
        )

Flask Uygulamasında Kullanım

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/generate-tc', methods=['GET'])
def generate_tc():
    return jsonify({"tc_kimlik_no": generate_tc_number()})

if __name__ == '__main__':
    app.run(debug=True)

Performans ve Güvenlik Notları

  1. Rastgelelik: Bu fonksiyon, Python’un random modülünü kullanır. Kriptografik olarak güvenli rastgelelik için secrets modülünü kullanabilirsiniz:

    import secrets
    
    def secure_generate_tc_number():
        random_pool1 = int(secrets.token_hex(3), 16) % 90000 + 10000
        random_pool2 = int(secrets.token_hex(2), 16) % 9000 + 1000
        # ... geri kalan kod aynı
    
  2. Kullanım Alanları:

    • Test verisi oluşturma
    • Demo uygulamaları
    • Eğitim amaçlı projeler
    • Form doğrulama testleri
  3. Yasal Uyarı: Bu fonksiyon sadece test ve eğitim amaçlıdır. Gerçek TC Kimlik Numaralarıyla çalışırken kişisel verilerin korunması kanunlarına (KVKK) dikkat ediniz.

Sık Sorulan Sorular

S: Bu fonksiyon gerçekten geçerli TC Kimlik Numaraları mı üretiyor? C: Evet, bu fonksiyon resmi TC Kimlik No algoritmasına uygun numaralar üretir. Ancak üretilen numaralar sadece test amaçlı kullanılmalıdır.

S: Django veya Flask gibi framework’lerde kullanabilir miyim? C: Evet, bu fonksiyon saf Python ile yazılmıştır ve herhangi bir Python projesinde (Django, Flask, FastAPI vb.) kullanılabilir.

S: Üretilen numaralar benzersiz mi? C: Fonksiyon rastgele sayılar kullandığı için aynı numarayı tekrar üretme ihtimali vardır. Eğer benzersizlik gerekiyorsa, daha önce üretilen numaraları bir veritabanında takip etmeniz gerekir.

Sonuç

Bu makalede, Python kullanarak nasıl geçerli TC Kimlik Numaraları oluşturabileceğinizi öğrendiniz. Bu kodu test verisi oluşturma veya TC Kimlik No doğrulama mantığını anlamak için kullanabilirsiniz.

Daha fazla bilgi için TC Kimlik No Algoritması sayfamızı ziyaret edebilirsiniz.


Not: Bu makalede verilen bilgiler ve kod örnekleri yalnızca eğitim ve test amaçlıdır. Resmi işlemler için her zaman Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü’nün resmi kaynaklarını kullanınız.