身份證號碼組成 含代碼


身份證號碼組成

15位身份證號組成:

  省份(2)(2)[](2)(2)(2)(2)+3序列號 [奇數給男性/偶數給女性]

18位身份證號組成:

省份(2)(2)[](2)(4)(2)(2)+3位序列號+1位校驗碼 [奇數給男性/偶數給女性]

注意:

1)(身份證號碼第七位到第十四位)表示編碼對象出生的年、月、日,其中年份用四位數字表示,年、月、日之間不用分隔符。

2)(身份證號碼第十五位到十七位)地址碼所標識的區域范圍內,對同年、月、日出生的人員編定的順序號。其中第十七位奇數分給男性,偶數分給女性。

3)(身份證號碼最后一位)是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。作為尾號的校驗碼,主要是為了校驗計算機輸入公民身份證號碼的前17位數字是否正確,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那么就得用X來代替,因為如果用10做尾號,那么此人的身份證就變成了19位,而19位的號碼違反了國家標准,並且中國的計算機用用系統也不承認19位的身份證號碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標准。

三、校驗碼的計算方法

1、將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

2、將這17位數字和系數相乘的結果相加。

3、用加出來和除以11,看余數是多少?

4、余數只可能有0-1-2-3-4-5-6-7-8-9-10這11個數字。其分別對應的最后一位身份證的號碼為1-0-X -9-8-7-6-5-4-3-2。

5、通過上面得知如果余數是2,身份證的最后一位號碼就是羅馬數字x。如果余數是10,就會在身份證的第18位數字上出現的是2。

例如:某男性的身份證號碼 我們要看看這個身份證是不是合法的身份證。

首先我們得出前17位的乘積和是189,然后用189除以11得出的結果是17+2/11,也就是說其余數是2。最后通過對應規則就可以知道余數2對應的是羅馬數字X。所以,可以判定這是一個合格的身份證號碼。

直接復制就可以使用

private bool XiaoYanMa(string id)

 {  //身份證號從第一位到第十七位的系數

   int[] QuanZhi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };

        //根據余數進行判斷身份證第18位的效驗碼

      string XiaoYan = "10X98765432";

     //對身份證數進行取值

      string number17 = id.Substring(0, 17);

      string number18 = id.Substring(17);

       int sum = 0;

          for (int i = 0; i < 17; i++)

            {//將身份證的17位數字和系數相乘的結果相加

           sum = sum + Convert.ToInt32(number17[i].ToString()) * QuanZhi[i];

            }

            //用加出來和除以11,看余數 進行判斷

            int mod = sum % 11;

            string FanHui = XiaoYan[mod].ToString();//將除於11的余數跟效驗的數下標一一對應

            //算出來的數在跟第18位進行比較看是否一致

            if (number18.Equals(FanHui, StringComparison.OrdinalIgnoreCase))//忽略大小寫比較方法

            {  return true;  }

            else

            {  return false; }

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM