"T.C. Kimlik No Algoritması" yazısını okuduktan sonra bu numaralar ilgimi çekmeye başladı ve akrabaların kimlik numaraları arasında benzerlik varmı diye merak etmeye başladım.Biraz uğraşınca ortaya çıktı.. Kimlik numaraları bilindiği gibi 11 hanelidir.Önemli olan ilk 9 hanesidir.Son iki hanesi doğrulama amaçlıdır.
Son iki haneyi bulmak için ilk 9 haneden yararlanıyoruz.Onun içinde
Bu yazıyı okuyabilirsiniz.
Yalnız bu aşağı yukarı yön sistemi her zaman çalışmıyor alakasız sonuçlarda çıkarabiliyor.Bir süre sonra başka bir soyadınada geçebiliyor
Python ile girilen bir kimlik numarasından istenilen sayıda tc no üreten bir program yazmıştım onuda paylaşayım.
http://www.yak0.com/download/tcuretici.rar
Php ile bu işlemi yapan bir kaç satır kod yazalım..
Kaynak
Rastgele bir tc no yazalım ( ilk 9 hane ):342165846
Bunu ilk 5 ve son 4 hane olacak şekilde parçalıyoruz.
Sizden yaşca aşağı inmek için (Kardeş , Kuzen vs.)
34216 => 5 basamaklı bu sayıyı 6 azaltıyoruz.
5846 => 4 basamaklı bu sayıyı 2 artırıyoruz.
Yeni ilk 9 hanemiz = 342105848
Sizden yaşca yukarı çıkmak için (Baba,amca vs.)
34216 => 5 basamaklı bu sayıyı 6 artırıyoruz.
5846 => 4 basamaklı bu sayıyı 2 azaltıyoruz.
Yeni ilk 9 hanemiz = 342225844
Bunu ilk 5 ve son 4 hane olacak şekilde parçalıyoruz.
Sizden yaşca aşağı inmek için (Kardeş , Kuzen vs.)
34216 => 5 basamaklı bu sayıyı 6 azaltıyoruz.
5846 => 4 basamaklı bu sayıyı 2 artırıyoruz.
Yeni ilk 9 hanemiz = 342105848
Sizden yaşca yukarı çıkmak için (Baba,amca vs.)
34216 => 5 basamaklı bu sayıyı 6 artırıyoruz.
5846 => 4 basamaklı bu sayıyı 2 azaltıyoruz.
Yeni ilk 9 hanemiz = 342225844
Son iki haneyi bulmak için ilk 9 haneden yararlanıyoruz.Onun içinde
Bu yazıyı okuyabilirsiniz.
Yalnız bu aşağı yukarı yön sistemi her zaman çalışmıyor alakasız sonuçlarda çıkarabiliyor.Bir süre sonra başka bir soyadınada geçebiliyor
Python ile girilen bir kimlik numarasından istenilen sayıda tc no üreten bir program yazmıştım onuda paylaşayım.
http://www.yak0.com/download/tcuretici.rar
Php ile bu işlemi yapan bir kaç satır kod yazalım..
PHP:
<?php
function guvenlik($tc){ // İlk 9 haneden son 2 haneyi hesaplayan fonksiyon
$bir=substr($tc,-9,1);
$iki=substr($tc,-8,1);
$uc=substr($tc,-7,1);
$dort=substr($tc,-6,1);
$bes=substr($tc,-5,1);
$alti=substr($tc,-4,1);
$yedi=substr($tc,-3,1);
$sekiz=substr($tc,-2,1);
$dokuz=substr($tc,-1,1);
$tekler=$bir+$uc+$bes+$yedi+$dokuz;
$ciftler=$iki+$dort+$alti+$sekiz;
$islem=$tekler*7-$ciftler;
$on = $islem % 10 ; // Mod 10 alıyoruz.
$ilkon=$tekler+$ciftler+$on;
$onbir = $ilkon % 10 ;
$yenino=$bir.$iki.$uc.$dort.$bes.$alti.$yedi.$sekiz.$dokuz.$on.$onbir;
return $yenino;
}
function akrabayap($tcx,$yon,$kactane) { //Kimlik no oluşturma fonksiyonu
$tc = $tc=substr($tcx,0,9); // ilk dokuz haneyi alıyoruz
$ilkbes=substr($tc,0,5); //ilk bes
$sondort=substr($tc,-4,4); //son dort seklinde ayırıyoruz
if ($yon == 0) // Üretme yönünü kontrol ediyoruz. Sıfırsa aşağı 1 ise yukarı
{
for ($i = 1; $i <= $kactane ; $i++ )
{
$ilkbes=$ilkbes-6*$i;
$sondort=$sondort+2*$i;
$dokuzhane=$ilkbes.$sondort;
$yenitc=guvenlik($dokuzhane); // Son iki haneyi olusturuyoruz.
echo $yenitc."<br>";
}
}
if ($yon == 1)
{
for ($i = 1; $i <= $kactane ; $i++ )
{
$ilkbes=$ilkbes+6*$i;
$sondort=$sondort-2*$i;
$dokuzhane=$ilkbes.$sondort;
$yenitc=guvenlik($dokuzhane);
echo $yenitc."<br>";
}
}
}
akrabayap("35672345636",0,3); //Test edelim.
?>
Kaynak