身份证号码的科普

根据中华人民共和国国家标准 GB 11643-1999中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为: 六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。例如:370481表示山东枣庄滕州市;370421曾表示山东枣庄滕县;130703表示河北张家口桥西区;130721表示河北张家口宣化县;130705表示河北张家口宣化区。

生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。

顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。

从以上前17位数字能够读取到持证人的最初发证地址、生日信息、性别信息。一般情况下,身份证号码终身不变。

最后一位是校验位,由数字0-9和字母X组成。校验位的校验规则如下(以已故家父身份证号码为例):

位数序号n 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
2(n-1) 131072 65536 32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
2(n-1)对11取余(加权数) 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
身份证号示例 3 7 0 4 2 1 1 9 5 9 0 2 2 4 7 4 1 7
号码含义 山东省 枣庄市 滕县 出生年月日      
号码×加权数 21 63 0 20 16 4 2 9 30 27 0 18 20 20 56 16 2 7
乘积求和 331   (331对11取余得1,号码校验正确)

只要身份证号码各位上的数字与该位对应的加权数乘积的和对11取余,最后结果是1,就是一个正确的身份证号码。那么,如果知道前17位,求最后一位的方法也很简单:因为最后一位数字的加权数是1,因此只要先将前17位数字加权乘积的和对11取余,加上最后一位数字之后和是1或者12,最终取余结果就是1了。如果最后一位数字是10,则用X表示,避免位数超过18位。

对应关系如下:

前17位取余结果 0 1 2 3 4 5 6 7 8 9 10
校验位 1 0 X 9 8 7 6 5 4 3 2

您也可以使用本站提供的小工具批量校验身份证号码是否正确:

http://www.zhaoxugeng.cn/tool/sfz.php