Python

Python ile TC Kimlik Doğrulama ve Algoritması

Python ile TC Kimlik Doğrulama ve Algoritması

Merhaba arkadaşlar Python ile TC kimlik numarasının algoritmasının nasıl çalıştığını ve neden hep çift rakamla biter merak ettiniz mi? gelin hep beraber göz atalım. Ayrıca Python ile TC kimlik numarasının algoritmaya göre doğrulaması fonksiyonu oluşturduk.

Hayatımızda hemen hemen her gün kullandığımız TC kimlik numaraları 11 rakamdan oluştuğunu herkes biliyordur fakat bu 11 hanenin son rakamı çift rakam oluştuğunu bir çoğumuz bilmemektedir. TC kimlik numaralarının belli bir algoritmaya göre üretilmez ise bazı aksaklıklar meydana gelebilir. gelin şimdi bu algoritmanın nasıl yazıldığına bakalım.

TC kimlik algoritmaları iki bölümden oluşmaktadır; birinci bölümü 9 rakamdan diğer bölümü ise son 2 rakamdan oluşmaktadır. ilk 9 rakamını nasıl oluştuğunu dair herhangi bir bilgi yok fakat ikinci bölümün bir algoritma ile oluşturulmaktadır.

TC kimlik numarasının algoritması

TC kimlik numarasını algoritmasını daha iyi anlamak için ilk 9 rakamını 1-9 kadar olan sayılar olarak kabul edelim. 123456789_ _

10. ve 11. Rakamı Nasıl Oluşmaktadır

TC kimlik numarasını 10. hanesi oluşturmak için ilk 9 hanesindeki 1. 3. 5. 7. 9. rakamlarını toplayıp 7 ile çarpıyoruz. Ardından ise kalan rakamları yani 2. 4. 6. 8. rakamları toplayıp daha sonra oluşan iki sayıyı birbirinden çıkarıyoruz. Sonuç sayısının son basamağı bize TC kimlik numarasının 10. hanesini vermektedir.

örnek: 
1+3+5+7+9 = 25
25 * 7 = 175
2+4+6+8 = 20
175 - 20 = 155 => 10. hanesi 5'tir

11. hanesi ise ilk 10 hanenin toplamı 1+2+3+4+5+6+7+8+9+5=50 toplamından çıkan sonucun son basamağı (0) bize 11. hane verir.

Python ile TC kimlik Numarasını Doğrulama

def identity_verificaiton(number: int) -> int:
    numberCheck = isinstance(number, int) #sayısal kontrol
    if numberCheck:
        numberList = [int(x) for x in str(number)] #sayıyı diziye dönüştürme
        if len(numberList) == 11: #11 hane kontrolu
            numberList = numberList[:9] #ilk 9 eleman

            tenDigit = ((numberList[0] + numberList[2] + numberList[4] + numberList[6] + numberList[8]) * 7)
            tenDigit = tenDigit - (numberList[1] + numberList[3] + numberList[5] + numberList[7])
            tenDigitLast = tenDigit % 10 #10. hanenin rakamı
            numberList.append(tenDigitLast)

            elevenDigit = sum(numberList)
            elevenDigitLast = elevenDigit % 10 #11. hanenin rakamı
            numberList.append(elevenDigitLast)

            result = "".join( [str(integer) for integer in numberList] ) # listeyi str dönüştür
            
            #TC kimlik doğrulamsı
            if int(result) == number:
                return True
            else:
                return False
        else:
            return False
    else:
        return False
print(identity_verificaiton(12345678950)
#output: True

print(identity_verificaiton(12345678958)
#output: False

Python API ile Doğrulama

#kütühane Kurulumu
pip install suds-py3
from suds.client import Client

client = Client("https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL")

args = {
    "TCKimlikNo": 10000000146,
    "Ad": "GAZİ MUSTAFA KEMAL",
    "Soyad": "ATATÜRK",
    "DogumYili": 1881
}

def tcKimlikDogrula(params):
    try:
        return client.service.TCKimlikNoDogrula(**params)
    except Exception as e:
        return False

print(tcKimlikDogrula(args))
#Output: True

Arkadaşlar yazımızda hata ve önerileriniz olursa lütfen yorum yapmayı unutmayın.
Unutmayın! Paylaşmak; kazanmanın en hızlı ve kolay yoludur. Bir sonraki blog’ta görüşmek dileğiyle esen kalın.

İçeriğimi beğendin mi? Bana destek olup bir kahve ısmarlayabilirsiniz. Çok teşekkür ederim!

Bu makale yardımcı oldu mu?
EvetHayır

Paylaş

1 yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir