MENU

身份证中的MOD 11-2校验

2020-02-05 • 数学

今天看了永乐大帝有关身份证的科普视频,然后又回去把回形针的相关视频看了一下,感觉其中的 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 。


注:本文参考以下资料:


咳咳

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

最後編輯與: 2021-09-11
返回文章清單 文章二維碼 打賞
本頁連結的二維碼
打賞二維碼