1. 程式人生 > >18位身份證號碼結構的系數算法

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

身份證號 clas com html con += 得到 math bsp

看了園子裏一個隨筆

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

  • 身份證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.。

系數怎麽來的呢?

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

2的7654321098754321次方%11得到

從最後一位向前,

            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());

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