身份证上有个X,系统总报错,这问题卡住多少人
老张去银行办理业务,输入身份证号码时发现第18位是X,系统立刻弹出提示说这是非法字符,他试着换成小写x还是不行,工作人员建议他把X删掉再补一个0,结果密码又对不上,折腾了半小时后,只能靠柜员手动查档案才解决问题,这种情况并不是偶然发生,全国很多人都遇到过。
身份证最后一位是X,它其实不是字母,而是数字10的代号,国家在1999年制定标准时,采用了模11算法,把前17位按照固定的权重加起来,再除以11,如果余数等于10,就用X来表示,因为一个位置只能放进一个字符,而10需要占两位,没法塞进去,所以X是通过计算得出的结果,不是随便选出来的,平均每11个人里,就有一个人的身份证带着X。
有人问为什么不用更简单的模10而要用模11,因为模10有个明显问题,比如把123456换成123546,只调换了相邻两个数字的位置,用模10就查不出来错误,但模11几乎能发现所有单个数字错、全部相邻数字换位的问题,连整段数字移位也能识别出来,中国人口那么多,身份证用了二十多年没出过大问题,靠的就是这个看起来有点复杂的算法。
国外也有这样的问题,冰岛和挪威嫌编号系统麻烦,就把尾数是10的号码全部跳过去不用,结果能用的号码一下子少了17%,现在冰岛每天最多只能给80个新生孩子分配号码,因为号码已经不够用了,他们选择了让号码整齐,却付出了可用数量的代价。
咱们这里没有跳过号码的问题,但是问题出在软件这边,不同系统对字母X的处理方式很不一样,有的要求必须大写,有的可以接受小写,有的会自动把X删掉,还有的干脆就不接收带X的输入,银行、医院、政务APP、打车软件这些地方各有各的规则,你在一个平台注册成功了,到另一个平台就可能卡住,这不是用户操作不对,是因为开发人员没有统一的标准,国家标准明明写得清清楚楚,可是做系统的人觉得“X这种情况很少见,就先不管它了”。
不光身份证号码这样用,企业信用代码的18位数字里,第17位也用了模11的方法计算,第18位则用模31的方式得出一个从A到Y的字母,二维码更复杂,它用的是BCH编码,哪怕坏掉一半也能被扫出来,大家面对满屏的黑点从不抱怨,偏偏对身份证号码最后那个X特别有意见,说到底,二维码只是工具,而身份证代表的是每个人自己,稍微动一下,人就会本能地感到紧张。
当初设定标准的时候,没人预料到如今每个人都需要自己输入身份证号码,以前在柜台办理时,由工作人员手动录入,字母X根本不是问题,现在手机一点系统自动校验,X就成了第一道坎,换成模10校验的话,每年可能会少几万个号码可用,尤其在北上广这些地方,一天出生上千人,同一家医院同一个时间段申请的号码扎堆出现,号段根本不够分配,不是不想改,而是改动成本太高。
老张后来回家试了三个APP,两个能识别,一个没法识别,他没有责怪技术不行,只是说这系统就像地铁闸机,偶尔卡一次可以接受,连续卡三次就得找人修了。
他不知道,每天有无数人在那个小小的X上,输入文字又删除,删除了再重新输入。
就是为了证明自己真的是本人。
热门跟贴