为什么身份证号尾号会出现“Ⅹ”

2023-07-05 23:37郭园园
读者 2023年13期
关键词:校验码身份证号条形码

郭园园

目前我国居民身份证号码总共是18位,前17位都有具体含义:前6位是首次办身份证时所在的省、市、区的代码,中间8位是持证人的出生年、月、日,后面3位是申请户籍时派出所的分配码。唯独最后一位数字,是对前面的数字进行简单的数学运算后得出的,它是一个校验码。有的人会问:“为什么我身份证号的最后一位是字母X?”其实,这并不是字母X,而是罗马数字Ⅹ。为什么不写成10呢?因为如果写成10,身份证号就变成19位了。在编码学中,不一样的数位不太容易存储和使用。那为什么最后一位的校验码会算出10呢?其实,这种算法已经有上千年的历史了。

来自丝绸之路的数学

首先,我们来看一种古老的算法:弃九法。

15世纪初,撒马尔罕城的统治者兀鲁伯格很爱钻研科学。他编订了《兀鲁伯格历》。这么喜欢科学的一个人,当然也很喜欢从帝国境内网罗各种数学、天文学人才。

阿尔·卡西是兀鲁伯格手下的首席科学家,也是兀鲁伯格天文台的第一任台长。当时的首席科学家不仅要帮助皇帝解决最困难的数学、天文学问题,还要给帝国境内的工匠、官员,还有儿童、青少年编订数学书。他编的这本书的名字叫《算术之钥》,就是算术的钥匙的意思。这本书囊括了跟今天小学和初中数学类似的内容:算术、代数、几何,书的第一卷讲的是整数的运算,比如加法、减法、乘法、除法,其中有一个算法很有意思,叫弃九法。

要了解弃九法,首先要弄清楚什么叫弃九数。比如,数字3217,把它每一位上的数字连续相加,3加2加1加7等于13;继续把13的每一位上的数字相加,1加3等于4。直到得到个位数字4为止,这个4就是3217的弃九数。其实这个弃九数就是3217除以9之后的余数,只不过这种连续相加的方法是一种快速算法。

弃九数有什么用?它最主要的作用是检验运算是否准确。比如,现在要检查3169乘以732等于2319708是否正确。如果没有别的方法的话,只能把它重新算一遍。但是用弃九法,首先把3169的弃九数求出来——1,再算出732的弃九数——3,接着算出2319708的弃九数——3,最后我们核验一下1乘以3等于3,结果是正确的。这就是古人的验算方法,其中充满了智慧。大部分的数学知识,对普通人来讲就是为了应用。

阿尔·卡西作为首席科学家辅佐兀鲁伯格制定天文历法的时候,需要进行大量运算。为了达到高精度的运算,阿尔·卡西也需要检验。作为一流的数学家,他在思考高维问题的时候比普通人具有优势,但如果只是比纯粹的加减乘除运算,数学家与普通人之间其实并无差别。

从弃九到同余

随着欧洲文艺复兴运动的开展,阿拉伯的许多算法传到了欧洲。而从明朝开始,西方的数理科学知识大量传入我国,形成西学东渐。

在弃九法发展的过程中,数学家们又逐渐认识到弃七法、弃十一法、弃十三法等。这些方法都属于今天初等数论中的同余理论。同余理论在我们日常生活中比较常见的应用是什么?答案是计算校验码。

和我们生活最息息相关的校验码就是身份证号尾号。平日里,我们经常需要在手机或者电脑上输入身份证号,输入这么长的数字很容易输错,有了第18位校验码,就能及时发现错误。只要一个小小的校验码,就可以保证整个系统的正常运转。

那它是怎么算的?主要分3步:首先身份证号码总共18位,把前17位号码依次乘以指定的系数,第一位乘以7,第二位乘以9,第三位乘以10……这在数学上叫作加权因子;然后,把这17个乘积相加;最后,用所得和数除以11,看余数是多少。

某一个很大的数除以11,它的余数有多少种可能?如果整除的话,余数看成0;如果没有整除,余数可能出现1、2、3、4、5、6、7、8、9,还有可能出现10,但是不可能出现11。按规定,不同的余数对应着不同的校验码。比如余数是0的时候,它对应的校验码就是1;余数是1的时候,它对应的校验码就是0;余数是2的时候,它对应的校验码是Ⅹ……这就是身份证号的最后一位可能是0、1、2、3、4、5、6、7、8、9、Ⅹ的原因。

下面来看一种简单一点儿的算法,它依然是利用弃十一法进行的校验码运算。只要是从正规的书店买到的图书,每一本书都会有一个ISBN编号,叫国际标准书号。

目前ISBN编号有两组:一组是10位的,另一组是13位的。一个含有校验码的10位ISBN编号,它的前9位是有具体含义的,你可以通过这9位数字看出这本书是哪个国家、哪家出版社的。

第10位怎么算呢?比如,某一本书前9位的源号码是730904547,将第一位数乘以10,第二位数乘以9,第三位数乘以8……将9个乘积相加,最后得到226。然后计算226加上谁,可以被11整除,结果发现226加5就可以被11整除。按照这个算法,校验码就应该是5,由此就得出第10位的校验码。

那它怎么起到校验作用?假如把第一个数输错了,本来是7,不小心输成了8。按照乘以加权因子再相加求和的方法,上面那个和已经不是226了,而是236。这时236需要加上6才能够被11整除。那按照这个算法,校验码应该是6,而不是5。

所以在真正操作的时候,如果有一位数字不小心输错了,但是最后校验码还是原来的数字,这时系统就会识别出这个号码是无效号码,是一个错误的号码。这是一个简单的数学算法,但是它蕴含着巨大的力量,为整个系统的运转提供安全保障。

校验码无处不在

在日常生活中,校验码是非常常见的。

平常去商店或者超市购物,你会看见条形码。条形码的最后一位也是校验码。识别的时候,只用拿扫描枪扫一下,机器就能根据条形码的粗细来识别不同的数字。

条形码蕴含的信息太少了,毕竟只有几个数字。所以除了条形码,我们还有二维码,二维码蕴含的信息更多。二维码中的黑白小格,实际上就是数字0和1。它不仅含有校验码,还有其他信息,比如识别码。

平常在扫二维码的时候,如果拿手盖住一块,是不是还可以扫出来;或者二维码有一些地方破损了,但是依然可以扫出来。这就是识别码在起作用,它是更复杂的数学工具。在工业生产比如汽车装配,或者更复杂的FAST天文望远镜的装配过程中,成千上万个零件就需要二维码的帮助,以完成组装。

美国数学家莫里斯·克莱因在《西方文化中的数学》中说过这样一句话:“数学知识如果脱离了它丰富的文化基础,就会被简化成一些毫无意义、充满技巧性的程序,数学的形象这时候就被扭曲了。”

任何一个数学公式、数学算法、数学定理背后都有它产生的源泉。比如身份证号中的算法,至少有一千年的历史,它背后有着数学思想演化的脉络。

(本文经中科院格致论道讲坛公众号“SELFtalks”授权刊登,本刊节选,陈玉斐图)

猜你喜欢
校验码身份证号条形码
创意条形码
老师情
作品赏析(3)
从条形码到二维码
从条形码到二维码
条形码大变身
基于Excel实现书号校验码的验证
基于FPGA的循环冗余校验码设计
身份证号码中的数学
《网印工业》关于作者投稿同时提供身份证号的通知