Bilirsiniz, tc kimlik numaralarımız rastgele oluşturulmuyor. Peki bu numaralar nasıl oluşturuluyor? Neden her 11 haneli numara tc kimlik no olamıyor? Bu sorunun cevabını ysk.gov.tr/ysk/secmenBilgi.jsp adresinde buldum. Adamlar tc kimlik no geçerlilik kontrolü için gereken fonksiyonu http://www.ysk.gov.tr/ysk/js/gen_validatorv2.js adresinde koymuşlar. O dosyadaki kodu inceleyerek yazdığım aşağıdaki kodla rastgele bir şekilde geçerli tc kimlik numaraları elde edebilirsiniz.
Private Function tcknkontrol(tckn As Double)
Dim dizi(1 To 9) As Integer
gecici = Int(tckn / 100)
gecici2 = Int(tckn / 100)
For i = 9 To 1 Step -1
dizi(i) = gecici2 Mod 10
gecici2 = Int(gecici2 / 10)
Next i
deg1 = dizi(9) + dizi(7) + dizi(5) + dizi(3) + dizi(1)
deg2 = dizi(8) + dizi(6) + dizi(4) + dizi(2)
toplam = deg1 * 3 + deg2
kontrol1 = (10 - (toplam Mod 10)) Mod 10
deg1 = kontrol1 + dizi(8) + dizi(6) + dizi(4) + dizi(2)
deg2 = dizi(9) + dizi(7) + dizi(5) + dizi(3) + dizi(1)
toplam = deg1 * 3 + deg2
kontrol2 = (10 - (toplam Mod 10)) Mod 10
gecici = gecici * 100 + kontrol1 * 10 + kontrol2
If gecici = tckn Then tcknkontrol = True Else tcknkontrol = False
End Function
Private Function rastgelets(altsinir, ustsinir As Double) As Double
Randomize
rastgelets = Int((ustsinir - altsinir + 1) * Rnd + altsinir)
End Function
Private Sub Form_Load()
Form1.Visible = False
Dim a As Double
a = 10000000000#
While tcknkontrol(a) = False
DoEvents
a = rastgelets(10000000000#, 99999999999#)
Wend
Clipboard.Clear
Clipboard.SetText a
MsgBox a & " - Numara panoya kopyalandı, kullanmak için : ctrl+v", _
vbInformation, "Geçerli bir TC kimlik no bulundu."
End
End SubBen hem bilen hem bilmeyen birisiyim, bu kodlar hangi programla üretilir?
*.vbs denedim sondaki vb'yi görünce.
Bir süredir TC kimlik kontrolü için olan algoritmayı arıyordum. İnternette değişik formüller var, ama yanlış sonuç veriyorlardı. Sizin algoritma işi gördü. Teşekkür ederim.
Hocam şimdi buradaki fonksiyonların hangi eleman olduklarını yazmamışsınız düzenleme imkanınız var mı birde gelecekten selam!
Açıkçası hiç hatırlamıyorum. Zaten kodu, yazıda bahsettiğim scripti baz alarak yazmıştım.