18位身份證號碼結構的係數算法

看了園子裏一個隨筆html

http://www.cnblogs.com/10158wsj/p/7050736.htmlspa

  • 身份證17位數分別乘以不一樣的係數。從第1位到第17位的係數分別爲:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2.
  • 將這17位數字和係數相乘的結果相加
  • 將step3的結果除以11,得出餘數
  • 因爲數字的特殊性,這些餘數只多是0-10這11個數字,身份證最後一位的對應數字爲1-0-X-9-8-7-6-5-4-3-2.。

係數怎麼來的呢?code

2^7%11-2^6%11-2^5%11 ......htm

2的7654321098754321次方%11獲得blog

從最後一位向前,it

            int m = 0;
            for (int i = 16;i>-1;i--)
            {
                m += (sfz[i] - '0') * ((int)Math.Pow(2,(17-i)) % 11);

            }
            Console.WriteLine(m.ToString() + "," +(12 - m%11).ToString());
相關文章
相關標籤/搜索