身份证是我们日常使用的证件,有18位数字组成,具有唯一性,但有些人身份证最后一位是X,这X代表什么意思呢?身份证末尾X是怎么来的?下面小编就带来介绍。
其实,这并不是字母X,而是罗马数字里的10。为什么不写10呢?因为如果是10,写出来身份证号码就变成19位了。在编码学中,不一样的数位就不太容易存储或者使用。
末尾X的诞生,其实全靠前17位数的“支持”。
现在通行的身份证是第二代居民身份证,其中的18位身份证号码,也成了每个人都刻在脑子里的数字。身份证号末尾的X代表的也是数字,表示数字“10”。
民身份号码共有18位数字:
6位地址码,按照《中华人民共和国行政区划代码》(GB/T 2260)确定的,户口所在地县一级行政区划代码。由于行政区划代码在历史上经过多次修订,所以就算是同一个地区出生的人,前六位也不一定相同。
8位出生日期码,四位数年份+2位数月份+2位数日期。
3位顺序码,男性为奇数,女性为偶数。
最后再加一位校验码。
身份证号码充满了“随机性”——我们没法计划自己何时出生、出生在何地。不过最后的这位校验码,却成了“不确定中的确定”。只要前17位都定下来了,最后这一位数字也就确定了。它是通过一套算法,将前17位数字代入运算得出来的数字。
这样费劲算数的目的,是为了以后检查错误更方便。身份证号码在输入的时候可能出现各种错误,除了漏字、多字这种位数显而易见的错误外,输错数字都不容易被发现。校验码则可以“反推”出身份证号码是否录入正确,甚至可以识别出相邻两位填反、错位等错误。
当然,校验码只是为防止随机发生的错误,它不能检查出有意的伪造错误,也不能用来自动更正发现的错误。
结尾出现X,都得“怪”这套校验算法。这套算法采用的方法是取模11,得出的计算结果范围是0到10。但身份证只有18位,结尾变成10就多了一位。这才把10的“重任”交给X来表示。
简单点说,X的出现是因为模数取了11。设计校验算法,是希望让算法尽可能覆盖到常见的身份证号码录入错误。对于取模11的情况而言,ISO 7064标准的附录A给出了该算法的有效性:能识别到所有的单替换、单换位和位移错误,对双替换错误的识别率也有90%。