Ne zamandır ilginç bir konu bulsam da yazsam diyorum. Malum uyduruk konulara ayrılmış bir sürü blog bulabilirsiniz. Eh kısmet bugüneymiş. Konumuza gelince, daha önce hiç kimlik numaralarınızın neden bu şekilde olduğunu düşündünüz mü? Hatırlarsanız kimlik numaraları ilk kullanıma girdiğinde sadece Atatürk’e özel bir numara verildiğini, bu numaranın da 10000000146 olduğunu açıklanmışlardı. Neden 10000000000 gibi bir sayı verilmediği sorusunun yanıtı ise son iki basamağın kontrol amaçlı kullanılmasıydı. Kısacası bütün kimlik numaralarının son iki basamağı bir algoritmayla oluşturuluyor. Ama bu algoritmayı tabii ki kimse söylüyor gibi durmuyor.
Bugün takip ettiğim bir forumda kimlik numarasının son basamağının nasıl elde edildiğini yazmışlar. Ben de ama olmaz ki, son iki basamağın nasıl hesaplandığını bulmalıyım dedim ve kolları sıvadım. Gözlerim kan çanağına döndü diyebilirim ama sonunda buldum. Aşağıda son iki basamağın nasıl hesaplandığını veriyorum.
Burada yer alan bilginin nasıl kullanılacağından tamamen siz sorumlusunuz. Bu bilginin kötüye kullanılması halinde herhangi bir şekilde sorumluluk kabul etmediğimi açıkça belirtiyorum. Bunu kabul etmiyorsanız lütfen bu yazının devamını okumayın, ileride sizin de okuyabileceğiniz başka yazılarım da olacak.
Gelelim algoritmaya. Kimlik numaranızın son iki basamağı ilk dokuz basamağının bir fonksiyonudur. Herkesin anlayacağı şekilde anlatmaya çalışayım:
- Kimlik numarasının soldan 1., 3., 5., 7. ve 9. basamakları toplanır ve bir X sayısı elde edilir.
- Kimlik numarasının soldan 2., 4., 6. ve 8. basamakları toplanır ve bir Y sayısı elde edilir.
- Kimlik numaranızın 10. basamağı 7*X-Y sayısının 10 tabanında mod’una eşittir. Yani 7 * X – Y = a mod 10 ise a kimlik numaranızın 10. basamağını oluşturur.
- Kimlik numaranızın son basamağı ise ilk 10 basamağın toplamının 10 tabanında mod’una eşittir.
Örnek vermek gerekirse kimlik diyelim ki kimlik numaranızın ilk dokuz basamağı 123456780 olsun. Bu durumda kalan iki basamağı hesaplayalım:
X = 1 + 3 + 5 + 7 + 0 = 16.
Y = 2 + 4 + 6 + 8 = 20.
O halde 10. basamak 7*X-Y mod 10 = 7*16 – 20 mod 10 = 92 mod 10 = 2 olacaktır.
Bu durumda kimlik numaranızın ilk on basamağı 1234567892 oldu. 11. basamağı hesaplamak ise daha kolay tabii ki.
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 0 + 2 mod 10 = 38 mod 10 = 8.
Gördüğünüz gibi kimlik numaranız bu durumda 12345678028 olacaktır.
Bu algoritmayı Atatürk’ün kimlik numarasına (10000000146) uygulamak daha kolay olacaktır.
X = 1 + 1 = 2
Y = 0
7 * X – Y mod 10 = 7*2-0 mod 10 = 14 mod 10 = 4.
Son basamak ise 1 + 1 + 4 mod 10 = 6.
Gördüğünüz gibi son derece kolay. Artık kağıt kalemi elinize alıp kendi kimlik numaranız doğru mu diye kontrol edebilirsiniz.
Teknolojik arkadaşlara algoritmayı test edebilecekleri bir C++ kodu da vereyim ki daha da netleşsin.
bool kimlikNoDogrula (char *kimlikNo)
{
int X = 0 ;
int Y = 0 ;
int ILKON = 0 ;int a = kimlikNo[9] – ’0′ ;
int b = kimlikNo[10] – ’0′ ;int i ;
for (i = 0; i < 9; i++)
{
int gcc = kimlikNo[i] – ’0′ ;
if (i % 2)
Y += gcc ;
else
X += gcc ;ILKON += gcc ;
}
int fark = (7*X – Y) % 10 ;if (fark != a)
return false ;ILKON += a ;
return (b == ILKON % 10) ;
}
NOT: Bu yazıdan kısa bir süre sonra algoritmayı test edebileceğiniz bir yazı daha yazdım. İlgili yazıya buradan ulaşabilir, kendi kimlik numaranız bu algoritmaya uygun mu, görebilirsiniz.
Kaynaklar:
http://arama.hurriyet.com.tr/arsivnews.aspx?id=123615
RSS
Twitter
FriendFeed
Pingback: livewire music downloads