身份证号码中的数学
2015-11-03韩雪涛
韩雪涛
我们生活的地方随处可见数字编码,当然,和我们最熟悉的,莫过于身份证号码了。
身份证是每一个公民的重要证件,而我们每个人,从一生下来开始就有了一个身份证号码,并且这个号码已成为我们生活中的一部分,1985年我国开始实行居民身份证制度,当时签发的身份证数字编号是15位,1999年7月1日实施了新的标准,身份证的数字编号升级为18位,由17位数字本位码和1位校验码组成。
身份证前6位是地址码,前1、2位数字表示所在省份的代码,第3、4位数字表示所在城市的代码、第5、6位数字表示所在区县的代码。
身份证第7~14位是出生日期码,表示编码对象出生的年、月、日,分别用4位、2位、2位数字表示,例如:2007年5月11日表示为20070511。
身份证第15~17位是顺序码,表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号,其中第17位表示性别:奇数表示男性,偶数表示女性。
身份证的第18位最有意思,是校验码,作为前17位的一种检验代码,校验码可用来识别身份证的真伪:如果你改变了前面某个数字而后面的校验码不相应改变,就会被计算机判断为非法身份证号码,那么,这位校验码是如何得出来的呢?
下面我们就来说明一下它的计算方法,
第一步,将前面17位身份证号分别乘以不同的系数(可称为“加权因子”),其各位对应的加权因子依次为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;
第二步,把得到的17个乘积相加求和(可称为“加权和”);
第三步,加权和除以11,求余数;
第四步,余数只能取0,1,2,3,4,5,6,7,8,9,10,根据余数值与校验码的对应关系即可确定出校验码,这11个余数对应的校验码依次为:1,0,X,9,8,7,6,5,4,3,2,即余数若为0,则最后的校验码取1。余数若为1,则最后的校验码取0。
需要解释的一点是,校验码中出现了一个“X”,X是罗马数字的10,为了保证身份证号码是18位,当检验码为“10”时,就用“X”代替了,通过上面提到的对应关系可知,如果前三步得到的余数是2,也会在身份证的第18位数字上出现X。
不妨举一个例子,某男性的身份证号码是34052419800101001X,我们来看看这个身份证是不是合法的,首先:把前17位数字分别乘7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,并求和得:3×7+4×9+0×l0+5×5+2×8+4×4+l×2+9×l+8×6+0×3+0×7+l×9+0×l0+l×5+0×8+0×4+l×2=189。
然后用189除以11得余数是2,最后通过对应规则可以知道,余数2对应的校验码是X,所以,这是一个合法的身份证号码。
显然,校验码的计算过程比较复杂,是由公安局的计算机根据上面的算法自动生成的,如果你有兴趣,不妨试着计算一下自己身份证号码最后的校验码哦!endprint