MENU

身份证中的MOD 11-2校验

February 5, 2020 • 数学

今天看了永乐大帝有关身份证的科普视频,然后又回去把回形针的相关视频看了一下,感觉其中的 MOD 11-2校验挺有意思的,今天就较为详细的讲一下它到底是怎么一回事儿。

GB11643-1999 是我国现行公民身份证号的国家标准。我们可以很容易地找到这一文件。


身份证号

身份证号即公民身份号码,由 18 位号码组成。身份证号码分为两部分,本体码和校验码。

本体码

身份证号的前十七为本体码(master number),排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码。这一部分较为简单,我不再赘述。

校验码

身份证号的第十八位为校验码(check number),可由前十七位通过规定的数学关系式运算得到。具体采用 MOD 11-2 校验码算法。

MOD 11-2 校验

首先身份证号码的每一位都有其固定的加权因子$Wi$,它等于$2$的$18-i$次方除以$11$的余数,$i$为各个号码的位数,即:
$$W_i = 2^{18-i}\pmod {11}$$
将前十七位号码$a_i$与其对应的加权因子$W_i$相乘再相加,可以得到数值$S$:
$$S = \sum_{i=1}^{17}W_i×a_i$$
求出$S$除以$11$的余数:
$$S\pmod{11}$$
再用$12$减去这个余数:
$$12-S\pmod{11}$$
最后计算出该差除以$11$的余数,就得到了最终的校验码$a_{18}$:
$$a_{18} = (12-S\pmod{11})\pmod{11}$$


好了,我们已经知道了算法,让我们试试吧(此处以上面提到的国家标准里的附录 A 为例):

一公民的身份证号码为 11010519491231002X

我们可以求出前十七位各自的加权因子

首先举个栗子,我们求出第5位的加权因子$W_5$:
$$2^{18-5} = 2^{13} = 8192$$
$W_5$就应等于 8192 除以 11 的余数:
$$W_5 = 8192\pmod{11} = 8$$
同理,一通计算猛如虎,我们可以轻松得出下面这一关于$W_i$与$a_i$关系的表格:

$a_i$1234567891011121314151617
$W_i$7910584216379105842

然后求出数值$S$:
$$S = \sum_{i=1}^{17}W_i×a_i = 7*1+9*1+10*0+5*1+8*0+4*5+2*1+1*9+6*4+3*9+7*1+9*2+10*3+5*1+8*0+4*0+2*2 = 167$$
用167除以 11 商 15 余 2 :
$$167\pmod{11} = 2$$
12减去 2 的差为 10 ,10 除以 11 商 0 余 10 :
$$(12-2)\pmod{11} = 10$$
因此校验码$a_{18}$等于 10 ,又身份证号码限定为 18 位,故 10 用罗马数字 X 代替,此公民的身份证号码校验码为 X 。


注:本文参考以下资料:


咳咳

第一次体验 MathaJax ,感觉不错,很容易上手。

Last Modified: March 18, 2020
Archives QR Code
QR Code for this page
Tipping QR Code