身份证号码按照GB11643—1999标准制作,共计18位
第一部分:地址码(前6位)
第1~2位:表示省、自治区、直辖市代码
例如河北省行政代码为13
第3~4位:表示地级市、盟、自治州代码
例如保定市在河北省内的行政代码为06
第5~6位:表示区县、县级市、区代码
例如定兴县在保定市内的行政代码为26
因此,河北省保定市定兴县的行政代码为130626
第二部分:出生日期码(第7~14位)
第7~10位:表示年份
第11~12位:表示月份
第13~14位:表示日期
例如张三的出生日期为2006年5月13日,则其出生日期码为20060513
第三部分:顺序码(第15~17位)
所在地派出所被分配有10个连续的号码。例如某派出所分配到的210~219
第15~16位:表示派出所编码
例如该派出所的代码为21,后面从0~9可以分配10个号码
第17位:表示性别
奇数分配给男性,偶数分配给女性。男性从1开始分配,女性从0开始分配,如果同年同月同日生的人有多个,则男性依次按照1、3、5、7、9顺序分配;女性依次按照0、2、4、6、8顺序分配
理论上讲,某个派出所辖区内给同一天出生的人办理身份证的最大数量为10,男性最多5人女性最多5人,超出此数量后无法在该派出所办理身份证,因为该派出所无法分配顺序码,此一点存疑,未验证
第四部分:校验码(第18位)
根据ISO7064:1983.MOD11-2算法计算出校验码,用于校验前面的17位数字是否正确,取值范围为0~10,具有唯一性,当值为10时,用罗马数字符X表示
步骤一:加权系数
将身份证号码前面17位数分别乘以不同的系数,从第1位到第17位分别对应的系数为
7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2
步骤二:乘积相加
将第一步中获取到的17组数相加,得到一个和值
步骤三:对11取余
将第二步中得到的和值除以11,得到余数
步骤四:继续取余
用12减去步骤三中的余数,然后继续对11取余,得到最终校验码
步骤五:直接映射校验码
也可以不使用步骤四,而是直接通过映射关系查找到最终校验码
步骤三中的余数只可能有 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 这11个数字
分别对应身份证最后一位校验码 1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2