既然10这么麻烦,为什么不干脆去掉它,把校验码的范围限定在0到9呢?这是因为MOD 11算法识别各类错误的概率都在90%以上,MOD 10算法则无法保证如此高的识别率。
不止身份证号里有校验码,日常许多编码都会用到,但计算校验码的方法各异。比如,法人和其他组织统一社会信用代码用的是MOD 31-3算法,需要除以31取余数,得到的校验码在0到30之间,大于等于10的数字用英文字母代替。
商品条码的校验码算法则不涉及余数,通过加减计算得出。
我们每天都要用到的二维码(QR Code),则用到了更为复杂的里德-所罗门编码,通过它生成的码,已经超越了普通校验码"发现错误"的层次,上升到能"纠正错误"的level。
纠错级别最高的一款,就算码上高达30%的信息无法识别,依然可以还原出完整信息。
身份证号末尾的数字和X是与主人没有关系的信息,但作为校验码中的一员,它仅有的一个字节隐藏着一连串的计算,在你输错时弹窗提醒,悄悄地刷一把公式的"存在感"。
你认识身份证号自带X的人吗?