中华人民共和国身份证号码校验码计算方法详解
今天我研究了下身份证号码的校验位,总结如下。 一、身份证号码 根据中华人民共和国国家标准《GB 11643-1999 公民身份号码(Citizen identification number)》,我们的身份证号由18位数字组成,其中前17个数字是本体码(master number),最后一个数字是校验码(check number),校验码是根据本体码的17个数字计算而得的。 (图片摘自《GB 11643-1999》) 在前面17个数字组成的本体码中,最开始的6位是地址码,是由《GB/T 2260 中华人民共和国行政区划代码》规定的,如北京市朝阳区是110105;中间8位数字代表出生日期,前面4位代表年,中间2位代表月,后面2位代表日,如1991年9月20日会被编为19910920;最后3位数字是一个顺序码,顺序码的奇数分配给男性,偶数分配给女性。最后1位是校验码,也就是我们后面要写的内容。 二、如何计算校验码 校验码采用的是国际标准化组织ISO订立的《ISO 7064: 1983》中的“MOD 11-2”校验码系统。 身份证号码一共18位,从右向左被依次编号为1、2、3、4、……、18,现在为各位都设置一个权(weight),用W表示,编号为i的数字权为:W[i]=2^(i-1) (mod 11) 如:W[1]=2^0%11=1;W[2]=2^1%11=2;等等 编号 权重 编号