Delphi TC Kimlik No Doğrulama Algoritması

6 Cevaplar

  1. Ertan dedi ki:

    Yukarıdaki kod yaklaşık 500 farklı TCNo doğruladıktan sonra bugün bir tane doğrulamadı. https://tckimlik.nvi.gov.tr/TCKimlikNo/Dogrulama.aspx sitesinden kontrol edildiğinde TCNo doğru. Sebebini anlayamadım. Acaba farklı kontroller geektiren TCNo şekilleri mi çıktı?

    • Murat ÖNER dedi ki:

      Merhaba algoritma ile ilgili bir sıkıntı söz konusu olmuş olabilir servis kullanma imkanınız varsa en sağlıklısı servis kullanmak ama offline çalışacak bir proje ise algoritmadaki sıkıntıyı bulmak gerekli bu durumda.

  2. barutali dedi ki:

    T.C Kimli no doğrulama algoritması değişmiş olabilir.

    • Murat ÖNER dedi ki:

      Değişmiş olduğunu düşünmüyorum ama delphi kısmında değilde c# ve javascript tarafında aynı algoritmayı halen kullanıyorum ama dediğim gibi delphi tarafında sıkıntı olabilir.

  3. Ayhan dedi ki:
    class function Hasta.TcKimlikDogrula(TCNo: Int64): Boolean;
    type
    	TinyInt = smallint;
    var
    	ATCNO: Int64;
    	BTCNO: Int64;
    	C1: Tinyint;
    	C2: Tinyint;
    	C3: Tinyint;
    	C4: Tinyint;
    	C5: Tinyint;
    	C6: Tinyint;
    	C7: Tinyint;
    	C8: Tinyint;
    	C9: Tinyint;
    	Q1: Integer;
    	Q2: Integer;
    begin
    	ATCNO := TCNo div 100;
    	BTCNO := TCNo div 100;
    	if (Length(IntToStr(TCNo)) = 11) then
    	begin
    		C1 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C2 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C3 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C4 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C5 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C6 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C7 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C8 := ATCNO mod 10; ATCNO := ATCNO div 10;
    		C9 := ATCNO mod 10; { ATCNO := ATCNO div 10; }
    		Q1 := ((10 - ((((C1 + C3 + C5 + C7 + C9) * 3) + (C2 + C4 + C6 + C8)) mod 10) ) mod 10);
    		Q2 := ((10 - (((((C2 + C4 + C6 + C8) + Q1) * 3) + (C1 + C3 + C5 + C7 + C9)) mod 10)) mod 10);
    		if ((BTCNO * 100) + (Q1 * 10) + Q2 = TCNo) then
    			Result := True
    		else
    			Result := False;
    		end
    	else
    		Result := False;
    end;
    • Murat ÖNER dedi ki:

      Teşekkür ederim desteğin için ayhan abi artık Delphi yazmayınca çalışmıyor diye yorum yazan arkadaşlara örnek kod bulup test edip paylaşamıyordum iyi oldu bu eline sağlık.

Bir Cevap Yazın