说明:本文提到的身份证号码专指18位公民身份号码,即二代身份证号码。
身份证号码组成

地址码: 表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
第1、2位数字表示:所在省份的代码;
第3、4位数字表示:所在城市的代码;
第5、6位数字表示:所在区县的代码。
需要没说明的是,随着行政区划的调整,同一个地方进行户口登记的身份证可能存在地址码不一致的情况。行政区划代码按GB/T 2260的规定执行。
出生日期码: 表示编码对象出生的年、月、日,年、月、日代码之间不用分隔符,格式为YYYYMMDD,如19880328。按GB/T 7408的规定执行。
顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。因此第17位数字兼具性别标识功能。
校验码: 根据前17位号码,通过采用ISO 7064:1983,MOD 11-2校验码系统计算出校验码。算法可参考下文。校验码可以是0-9的数字,有时也用X表示,为罗马字符X,相当于10。
校验码算法
将前17位本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。
加权因子:

校验码:

算法举例:
本体码为:11010519491231002
第一步: 各位数与对应加权因子乘积求和1*7+1*9+0*10+1*5+***=167
第二步:对求和进行除11得余数167%11=2
第三步:根据余数2对照校验码得X
因此完整身份证号为:11010519491231002X