confidant1903 Posted November 20, 2009 Share Posted November 20, 2009 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 More sharing options...
Bultar Posted November 20, 2009 Share Posted November 20, 2009 EE ilk 9 neye göre veriliyor peki ? Link to comment Share on other sites More sharing options...
striker_55 Posted November 20, 2009 Share Posted November 20, 2009 EE ilk 9 neye göre veriliyor peki ? güzel bir soru Link to comment Share on other sites More sharing options...
confidant1903 Posted November 20, 2009 Author Share Posted November 20, 2009 EE ilk 9 neye göre veriliyor peki ? ilk 9 otomatik üretiliyo.. Link to comment Share on other sites More sharing options...
blackman12 Posted November 21, 2009 Share Posted November 21, 2009 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 More sharing options...
eScape Posted November 21, 2009 Share Posted November 21, 2009 Kimlik numaramda işe yaramadı. Sanırım algoritma hatalı. Link to comment Share on other sites More sharing options...
[email protected] Posted November 21, 2009 Share Posted November 21, 2009 uğraştığınız şeye bak ziyan oluyorsunuz buralarda arkadaşlar Link to comment Share on other sites More sharing options...
NoobAccountant Posted November 21, 2009 Share Posted November 21, 2009 Mantıklı bir alogaritmasının olması muhtemel.Ayrıca alogaritma üzerinde çalışadak en azından C yada VB de kanallı çalışma yapılmış...Bu kimseyi ziyan etmez,düşünce akışını çalıştırır Link to comment Share on other sites More sharing options...
pcmemo Posted November 21, 2009 Share Posted November 21, 2009 Algoritmasını çözemessiniz uğraşmayın Link to comment Share on other sites More sharing options...
ıssız adam Posted November 21, 2009 Share Posted November 21, 2009 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 Link to comment Share on other sites More sharing options...
bygokce Posted November 21, 2009 Share Posted November 21, 2009 bende neden tutmuyo bu algoritma Link to comment Share on other sites More sharing options...
0sk1 Posted November 21, 2009 Share Posted November 21, 2009 Public Function TC_VER(SonTC as string)TC_VER=val(SonTC)+1End Function[/CODE] Aslında bu kadar basit niye çok zorlamışlar ya Link to comment Share on other sites More sharing options...
wmismail Posted November 21, 2009 Share Posted November 21, 2009 rnd*11 Bu kadar uğraşmaya gerek yok Link to comment Share on other sites More sharing options...
confidant1903 Posted November 21, 2009 Author Share Posted November 21, 2009 Kimlik numaramda işe yaramadı. Sanırım algoritma hatalı. ben denedim çoğu kimlik numarasında tutuyor ve tutması gerek. Sanırım sen hesaplamayı yanlış yaptın. istersen söyle ilk 9'u, son 2yi buliim hemen Link to comment Share on other sites More sharing options...
miy33 Posted November 21, 2009 Share Posted November 21, 2009 bu algoritmanın tamamını çözemezsiniz zaten çözebilseniz anında tübitakta işiniz hazır..... Link to comment Share on other sites More sharing options...
pcmemo Posted November 21, 2009 Share Posted November 21, 2009 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 Plaka alfabetik sırayla verildi Ama tc noların bi algoritması var.Ki bu algoritmayı çözemessiniz. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.