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!
Asil Saral TC si ni istiyorum