>首页> IT >

环球快资讯丨为什么我的身份证号末尾是X?答案确实不简单

时间:2022-11-05 17:57:27       来源:搜狐四象工作室

这是一张目前通行的第二代居民身份证,有国徽的这面是正面,有个人信息的是反面,底部这串18位的编码是身份证号。


(资料图片仅供参考)

从左到右前6位数是地址码,参考行政区划代码,依次代表省级、市级、县级所在地区。

不过,由于行政区划代码曾多次修订,哪怕来自同一个地方,身份证上这6位也可能不一样。

随后8位数字是出生日期码,接下来的3位是该日期出生婴儿的顺序码,在000到999之间,偶数被分配给女性,奇数被分配给男性。

那么,最后一位代表什么?为什么有人是数字,有人是X呢?

| Roxie 视觉 |昭昭昭 导演&特效|Ys 实习生|好好

前17位数字说尽了身份证主人的出生地、年龄和性别,而最后的字母并不携带实质信息,它是额外添加的校验码。

当我们手动输入身份证号,除了多一位、少一位这种比较明显的失误,可能难以发现自己输错了。

而身份证最后一位的校验码可以快速检测出这些错误,系统往往会弹出提醒,让用户重新输入:

那么,校验码是怎么发现身份证格式错误的?

身份证最后一位校验码数值通过MOD运算得出,通过代入身份证前17位数字,计算出最后1位校验码,采用的算法是MOD 11-2。

具体公式长这样:

这是一个求余公式,a¡和W¡的乘积之和除以11,余数是1。

i代表身份证号从右到左的位置序号,a¡对应第i位置上的身份证数字,它们都为0到10之间的整数。现在以这个身份证号为例,计算一下a₁的数值。

公式中的W¡以2为基数,由另一个公式求余算出。根据公式,把所有a¡和W¡的数值相乘,再将乘积相加除以11,已知余数为1,由此可以计算出此处a₁的值是10。

也就是说,这个身份证号最后1位应该是10,但直接用数字10会让号码从18位变成19位,因此用罗马数字X来替代10。

身份证号最后一位1-X校验码都由此公式算出,如果你的身份证号出现X,说明根据前17位计算出的数值刚好为10。

X的存在解决了位数的问题,但有可能给身份证主人带来烦恼,比如一些网站将身份证号的后6位作为初始密码,却不支持输入字母。

既然10这么麻烦,为什么不干脆去掉它,把校验码的范围限定在0到9呢?这是因为MOD 11算法识别各类错误的概率都在90%以上,MOD 10算法则无法保证如此高的识别率。

不止身份证号里有校验码,日常许多编码都会用到,但计算校验码的方法各异。比如,法人和其他组织统一社会信用代码用的是MOD 31-3算法,需要除以31取余数,得到的校验码在0到30之间,大于等于10的数字用英文字母代替。

商品条码的校验码算法则不涉及余数,通过加减计算得出。

我们每天都要用到的二维码(QR Code),则用到了更为复杂的里德-所罗门编码,通过它生成的码,已经超越了普通校验码“发现错误”的层次,上升到能“纠正错误”的level。

纠错级别最高的一款,就算码上高达30%的信息无法识别,依然可以还原出完整信息。

身份证号末尾的数字和X是与主人没有关系的信息,但作为校验码中的一员,它仅有的一个字节隐藏着一连串的计算,在你输错时弹窗提醒,悄悄地刷一把公式的“存在感”。

你认识身份证号自带X的人吗?欢迎在评论区和我们交流。

关键词: 行政区划 这么麻烦 出生日期