欢迎光临散文网 会员登陆 & 注册

身份证号第18位校验码的一种简便算法

2021-10-05 22:52 作者:達生  | 我要投稿

    大家号,我是达生,今天给大家讲解一种身份证号第18位校验码的计算方法。跟网上的其他计算方法相比,这种方法更简便,更直观。

    众所周知,二代身份证号共有18位数字,前6位是地址码,表示公民所在区(县、自治县或县级市),第7到14位数字表示公民的出生日期,第15到17位是顺序码,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。第18位就是今天要讲的校验码,是根据前17位数字通过一定的算法计算出来的数字(可能为X),用来保证身份证号的正确性,防止用户不小心输错身份证号。计算方法如下:

    首先计算身份证号第一位,将其乘以2再加上身份证号的第二位,将结果乘以2再加上身份证号的第三位,将结果乘以2再加上身份证号的第四位,······,一直加到第17位。将所得结果乘以20再加1,然后计算它除以11的余数,余数是几,校验码就是几。余数是10,校验码为X。

    举个例子,身份证号362425198806257382(随机产生的身份证号,不要瞎想),它的第一位数字是3,3乘以2再加上第二位数字6的结果是12,12乘以2再加上第三位数字2的结果是26,26乘以2再加上第四位数字4的结果是56,余下的结果依次是114,233,467,943,1894,3796,7592,15190,30382,60769,121545,243093,486194。486194*20+1=9723881,9723881除以11的余数是2,因此身份证号的第18位就是2。

    可以看出,这种方法所产生的中间结果过大,不便于口算。为了减少计算量,口算时可以每计算一步,将结果除以11,取其余数来代替原来的结果。还是以上面的身份证号为例,(3*2+6)%11=1,(1*2+2)%11=4,(4*2+4)%11=1,······,(4*2+8)%11=5。5*20+1=101,101%11=2,因此身份证号的第18位就是2。这就是本文所介绍的简便方法。%符号表示取余运算,a%b读作“a除以b的余数”。

    计算校验码的java代码如下:


身份证号第18位校验码的一种简便算法的评论 (共 条)

分享到微博请遵守国家法律