楊元韡
眾所周知,居民身份證是每一個(gè)公民的重要證件,它與我們的生活密切相關(guān),比如申請(qǐng)考駕駛證,辦理出國手續(xù),銀行開戶等都需要它.
我國于20世紀(jì)80年代開始實(shí)行身份證制度,第一代身份證登記發(fā)放時(shí)還是手工登記的,漏錯(cuò)重不可避免.當(dāng)2004年換發(fā)第二代身份證且實(shí)現(xiàn)全國聯(lián)網(wǎng)后,重號(hào)問題仍然非常嚴(yán)重,當(dāng)時(shí)有168萬重號(hào)身份證.公安機(jī)關(guān)用近6年時(shí)間清理了這些重復(fù)的身份證號(hào)碼,也是“蠻拼”的.現(xiàn)在新申請(qǐng)的第二代身份證不會(huì)再出現(xiàn)重號(hào)問題,這也是時(shí)代的一個(gè)進(jìn)步.
每一個(gè)人的身份證號(hào)碼都是唯一的,這一串號(hào)碼到底是什么意思呢?下面我們來解密身份證號(hào)碼.
我們知道,現(xiàn)在的第二代身份證的號(hào)碼共18位.我們先來分析前17位號(hào)碼的含義.前6位是地址碼,比如320911表示的是江蘇省鹽城市鹽都區(qū).第7到14位是出生日期代碼,比如19830418表示的是1983年4月18日出生.第15到17位是順序碼,是為同一地址碼所在的行政區(qū)域內(nèi)同年同月同日出生人員編寫的順序碼,但值得注意的是,第17位上的奇數(shù)全部分配給男性,偶數(shù)全部分配給女性.因此,給出一個(gè)身份證號(hào)碼,從第17位的奇偶性我們很容易判斷這個(gè)號(hào)碼的主人是男性還是女性,你知道嗎?
最為復(fù)雜的是第18位,我們稱為校驗(yàn)碼.什么是校驗(yàn)碼?代碼作為數(shù)據(jù)向計(jì)算機(jī)或其他設(shè)備輸入時(shí),容易產(chǎn)生輸入錯(cuò)誤,為了減少輸入錯(cuò)誤,編碼專家發(fā)明了各種校驗(yàn)檢錯(cuò)的方法,并依據(jù)這些方法設(shè)置了校驗(yàn)碼.同時(shí),校驗(yàn)碼還可以為身份證的真?zhèn)巫R(shí)別帶來方便,即根據(jù)前17位的號(hào)碼通過某種規(guī)則可以得到第18位號(hào)碼.下面我們來了解這個(gè)規(guī)則.
我們以具體例子為例,例如身份證號(hào)碼前17位是32091119830418091,那第18位是什么呢?
第一步:前17位數(shù)字中,從右向左數(shù)的第17位上的數(shù)字是3(實(shí)際上就是從左往右的第1位),我們計(jì)算217除以11所得的余數(shù)為7,再將兩者相乘得到第1組乘積3×7=21;從右向左數(shù)的第16位上的數(shù)字是2(實(shí)際上就是從左往右的第2位),我們計(jì)算216除以11所得的余數(shù)為9,再將兩者相乘得到第2組乘積2×9=18……一般地,假定從右向左數(shù)的第n位上的數(shù)字是k,我們計(jì)算2n除以11的余數(shù)(記為 mod(2n,11)),再將兩者相乘得到第n組乘積k×mod(2n,11);然后將這17組乘積相加得到一個(gè)和s,就是s=3×7+2×9+0×10+9×5+1×8+1×4+1×2+9×1+8×6+3×3+0×7+4×9+1×10+8×5+0×8+9×4+1×2=288.在這里,mod(2n,11)稱為從右往左數(shù)的第n位數(shù)字的加權(quán)因子,n=1,2,3,…,17時(shí)的加權(quán)因子分別為2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7.因 此,第一步實(shí)際上就是求每一位數(shù)字與它的加權(quán)因子乘積的和s.
第二步:計(jì)算y=mod(s,11),即第一步得到的和s除以11所得的余數(shù).剛才例子中的s=288,因此不難得到y(tǒng)=mod(288,11)=2.
第三步:將第二步所得的y,在下表中找到與它對(duì)應(yīng)的校驗(yàn)碼:

例如,我們?cè)诘诙降玫統(tǒng)=2,對(duì)應(yīng)的校驗(yàn)碼為X.因此,身份證號(hào)碼前17位是32091119830418091,則第18位一定是X.
可能還有同學(xué)們會(huì)問,為什么會(huì)有X這個(gè)字母而不是數(shù)字?
實(shí)際上,第三步中的校驗(yàn)碼的表格的規(guī)律是,上下兩個(gè)數(shù)字和除以11得到的余數(shù)恰好為1.例如上面的數(shù)字是5,則下面的校驗(yàn)碼一定為7,它們的和為12,恰好滿足要求;而上面的數(shù)字為2的時(shí)候,則下面的效驗(yàn)碼理應(yīng)是10.但是如果用10來做校驗(yàn)碼,那么身份證號(hào)碼就變成19位了,而19位的號(hào)碼違反了國家標(biāo)準(zhǔn),并且我國的計(jì)算機(jī)應(yīng)用系統(tǒng)也不承認(rèn)19位的身份證號(hào)碼.而X是羅馬數(shù)字10,用X來代替10,可以保證公民的身份證號(hào)碼符合國家標(biāo)準(zhǔn).
至此,我們已經(jīng)揭開了身份證號(hào)碼中的數(shù)學(xué)之“謎”.從身份證號(hào)碼中的數(shù)學(xué)之“謎”的探索之旅中,我們可以發(fā)現(xiàn)數(shù)學(xué)中的編碼理論在實(shí)際生活中有著很重要的應(yīng)用.類似地,書本的條形碼,還有最近非常流行的“我查查”等APP也是編碼理論的一些重要應(yīng)用.
生活處處皆有數(shù)學(xué),期待同學(xué)們有發(fā)現(xiàn)數(shù)學(xué)的眼睛和探究數(shù)學(xué)的意識(shí)!