身份证号的组成结构:
区域码(6位) 出生日期码(8位) 顺序码(2位) 性别码(1位) 校验码(1位)
共18位。
区域码 指的是公民常住户口所在县(市、镇、区)的行政划区代码,如110102是北京市-西城区。但港澳台地区居民的身份号码只精确到省级。出生日期码 表示公民出生的公历年(4位)、月(2位)、日(2位)。顺序码 表示在同一区域码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号。性别码 奇数表示男性,偶数表示女性。最后一位是校验码。
前面的没啥好说的,最主要的是最后这个校验码。
最后一位是校验码,这里采用的是ISO 7064:1983,MOD 11-2校验码系统。校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为18位的规定,则以“X”代替校验码“10”。
可能这个解释你不能看懂,那么我下面手撸一遍计算过程。
校验码计算方式(小学生能看懂版本):
假设一个身份证前17位:33078119850907809
取身份证第1位计算17减0[身份证位数减1] 17-(1-1)=17计算2的17次方 2^17=131072计算131072除以11,取余数 131072➗11=11915……7 下面以 131072%11=7 表示用7乘以3[身份证号第1位数字] 7*3=21记录下21这个数字
取身份证第2位
计算17减1[身份证位数减1] 17-(2-1)=16计算2的16次方 2^16=65536计算65536除以11,取余数 65536%11=9用9乘以3[身份证号第2位数字] 9*3=27记录下27这个数字
取身份证第3位
………………
取身份证第17位
计算17减16[身份证位数减1] 17-(17-1)=1计算2的1次方 2^1=2计算2除以11,取余数 2%11=2用2乘以9[身份证号第17位数字] 2*9=18记录下18这个数字我们把这17个数字相加最后结果是423(不信可以自己手动算)计算最后结果423除以11 取余数 423%11=5计算12减5 12-5=7计算7除以11取余数 7%11=7
最后的计算结果只可能是0-10 这11个数字(感谢@乔松的指正),因为身份证号只有18位 所以如果最后这个校验码是10那么