這是一張目前通行的第二代居民身份證,有國(guó)徽的這面是正面,有個(gè)人信息的是反面,底部這串 18 位的編碼是身份證號(hào)。
(相關(guān)資料圖)
從左到右前 6 位數(shù)是地址碼,參考行政區(qū)劃代碼,依次代表省級(jí)、市級(jí)、縣級(jí)所在地區(qū)。
不過,由于行政區(qū)劃代碼曾多次修訂,哪怕來自同一個(gè)地方,身份證上這 6 位也可能不一樣。
隨后 8 位數(shù)字是出生日期碼,接下來的 3 位是該日期出生嬰兒的順序碼,在 000 到 999 之間,偶數(shù)被分配給女性,奇數(shù)被分配給男性。
那么,最后一位代表什么?為什么有人是數(shù)字,有人是 X 呢?
前 17 位數(shù)字說盡了身份證主人的出生地、年齡和性別,而最后的字母并不攜帶實(shí)質(zhì)信息,它是額外添加的校驗(yàn)碼。
當(dāng)我們手動(dòng)輸入身份證號(hào),除了多一位、少一位這種比較明顯的失誤,可能難以發(fā)現(xiàn)自己輸錯(cuò)了。
而身份證最后一位的校驗(yàn)碼可以快速檢測(cè)出這些錯(cuò)誤,系統(tǒng)往往會(huì)彈出提醒,讓用戶重新輸入:
那么,校驗(yàn)碼是怎么發(fā)現(xiàn)身份證格式錯(cuò)誤的?
身份證最后一位校驗(yàn)碼數(shù)值通過 MOD 運(yùn)算得出,通過代入身份證前 17 位數(shù)字,計(jì)算出最后 1 位校驗(yàn)碼,采用的算法是 MOD 11-2。
具體公式長(zhǎng)這樣:
這是一個(gè)求余公式,a? 和 W? 的乘積之和除以 11,余數(shù)是 1。
i 代表身份證號(hào)從右到左的位置序號(hào),a? 對(duì)應(yīng)第 i 位置上的身份證數(shù)字,它們都為 0 到 10 之間的整數(shù)。現(xiàn)在以這個(gè)身份證號(hào)為例,計(jì)算一下 a 的數(shù)值。
公式中的 W? 以 2 為基數(shù),由另一個(gè)公式求余算出。根據(jù)公式,把所有 a? 和 W? 的數(shù)值相乘,再將乘積相加除以 11,已知余數(shù)為 1,由此可以計(jì)算出此處 a 的值是 10。
也就是說,這個(gè)身份證號(hào)最后 1 位應(yīng)該是 10,但直接用數(shù)字 10 會(huì)讓號(hào)碼從 18 位變成 19 位,因此用羅馬數(shù)字 X 來替代 10。
身份證號(hào)最后一位 1-X 校驗(yàn)碼都由此公式算出,如果你的身份證號(hào)出現(xiàn) X,說明根據(jù)前 17 位計(jì)算出的數(shù)值剛好為 10。
X 的存在解決了位數(shù)的問題,但有可能給身份證主人帶來煩惱,比如一些網(wǎng)站將身份證號(hào)的后 6 位作為初始密碼,卻不支持輸入字母。
既然 10 這么麻煩,為什么不干脆去掉它,把校驗(yàn)碼的范圍限定在 0 到 9 呢?這是因?yàn)?MOD 11 算法識(shí)別各類錯(cuò)誤的概率都在 90% 以上,MOD 10 算法則無法保證如此高的識(shí)別率。
不止身份證號(hào)里有校驗(yàn)碼,日常許多編碼都會(huì)用到,但計(jì)算校驗(yàn)碼的方法各異。比如,法人和其他組織統(tǒng)一社會(huì)信用代碼用的是 MOD 31-3 算法,需要除以 31 取余數(shù),得到的校驗(yàn)碼在 0 到 30 之間,大于等于 10 的數(shù)字用英文字母代替。
商品條碼的校驗(yàn)碼算法則不涉及余數(shù),通過加減計(jì)算得出。
我們每天都要用到的二維碼(QR Code),則用到了更為復(fù)雜的里德 - 所羅門編碼,通過它生成的碼,已經(jīng)超越了普通校驗(yàn)碼 " 發(fā)現(xiàn)錯(cuò)誤 " 的層次,上升到能 " 糾正錯(cuò)誤 " 的 level。
糾錯(cuò)級(jí)別最高的一款,就算碼上高達(dá) 30% 的信息無法識(shí)別,依然可以還原出完整信息。
身份證號(hào)末尾的數(shù)字和 X 是與主人沒有關(guān)系的信息,但作為校驗(yàn)碼中的一員,它僅有的一個(gè)字節(jié)隱藏著一連串的計(jì)算,在你輸錯(cuò)時(shí)彈窗提醒,悄悄地刷一把公式的 " 存在感 "。
你認(rèn)識(shí)身份證號(hào)自帶 X 的人嗎?歡迎在評(píng)論區(qū)和我們交流。
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-06
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-05
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04
頭條 22-11-04