Revision #1

You are currently reviewing an older revision of this page.
Go to current version
        Türkiye Cumhuriyeti Kimlik Numarası 11 rakamdan oluşmaktadır. Son iki rakam ise sağlama alanıdır. Türkiye Cumhuriyeti Kimlik Numaraları hiçbir bilgi içermeyen, matematiksel algoritma mantığı içerisinde üretilmiştir. Son rakamın bütün Türkiye Cumhuriyeti Kimlik Numaralarında çifttir.

 

               Bu algoritmaya göre T.C. Kimlik numarası kontrolünün faydalarına gelecek olursak kullanıcılar genelde gerçek T.C. Kimlik numaralarını paylaşmamak için 11111111111, 12345678901 şeklinde rakamsal değer girip formlardaki alanları geçebilir yada tabiri caiz ise rakamları sallayabilir bu algoritma ile kullanıcının gerçek bir T.C. Kimlik numarası girmek zorunda bırakılıyor.

C# Methodu

public static bool TcDogrula(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;
}

 SQL Fonksiyonu

CREATE FUNCTION [dbo].[TckNoVerification](@TcNo Bigint)
RETURNS BIT
AS
BEGIN
DECLARE @ATCNO Bigint
DECLARE @BTCNO Bigint
DECLARE @C1 Tinyint
DECLARE @C2 Tinyint
DECLARE @C3 Tinyint
DECLARE @C4 Tinyint
DECLARE @C5 Tinyint
DECLARE @C6 Tinyint
DECLARE @C7 Tinyint
DECLARE @C8 Tinyint
DECLARE @C9 Tinyint
DECLARE @Q1 Int
DECLARE @Q2 Int
DECLARE @R Bit
SET @ATCNO = @TcNo / 100
SET @BTCNO = @TcNo / 100
IF LEN(CONVERT(VARCHAR(19),@TcNo)) = 11
BEGIN
SET @C1 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C2 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C3 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C4 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C5 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C6 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C7 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C8 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C9 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @Q1 = ((10-((((@C1+@C3+@C5+@C7+@C9)*3)+(@C2+@C4+@C6+@C8)) % 10))%10)
SET @Q2 = ((10-(((((@C2+@C4+@C6+@C8)+@Q1)*3)+(@C1+@C3+@C5+@C7+@C9))%10))%10)
IF (@BTCNO * 100)+(@Q1 * 10)+@Q2 = @TcNo SET @R = 1 ELSE SET @R = 0
END ELSE SET @R = 0
RETURN @R
END

Kaynak: http://tr.wikipedia.org/wiki/T%C3%BCrkiye_Cumhuriyeti_Kimlik_Numaras%C4%B1