十八位身份證最末位是校驗(yàn)碼,按一定的規(guī)則產(chǎn)生的,用于校驗(yàn)身份證真?zhèn)?,按理這規(guī)則屬于保密的,X代表的是其中一個(gè)校驗(yàn)碼,是10。校驗(yàn)碼從0到X共11個(gè)。 分配規(guī)則:根據(jù)〖中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn) GB 11643-1999〗中有關(guān)公民身份號(hào)碼的規(guī)定,公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位數(shù)字校驗(yàn)碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼。 地址碼表示編碼對(duì)象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼。生日期碼表示編碼對(duì)象出生的年、月、日,其中年份用四位數(shù)字表示,年、月、日之間不用分隔符。順序碼表示同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、月、日出生的人員編定的順序號(hào)。順序碼的奇數(shù)分給男性,偶數(shù)分給女性。校驗(yàn)碼是根據(jù)前面十七位數(shù)字碼,按照ISO 7064:1983.MOD 11-2校驗(yàn)碼計(jì)算出來的檢驗(yàn)碼。下面舉例說明該計(jì)算方法。 15位的身份證編碼首先把出生年擴(kuò)展為4位,簡(jiǎn)單的就是增加一個(gè)19,但是這對(duì)于1900年出生的人不使用(這樣的壽星不多了) 某男性公民身份號(hào)碼本體碼為34052419800101001V(V為校驗(yàn)碼),首先按照公式⑴計(jì)算: ∑(ai×Wi)(mod 11)……………………………………(1) 公式( 1)說明: i----表示號(hào)碼字符從右至左包括校驗(yàn)碼在內(nèi)的位置序號(hào); ai----表示第i位置上的號(hào)碼字符值; Wi----示第i位置上的加權(quán)因子(其值已定),其數(shù)值依據(jù)公式Wi=2^(n-1)(mod 11)計(jì)算得出。 i: 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ai: 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 V Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 根據(jù)公式(1)進(jìn)行計(jì)算: ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189 ∑(ai×Wi)(mod 11) = 2(189 ÷ 11 = 17 + 2/11) 然后根據(jù)計(jì)算的結(jié)果,從下面的表中查出相應(yīng)的校驗(yàn)碼,其中X表示計(jì)算結(jié)果為10: ∑(ai×WI) (mod 11) : 0 1 2 3 4 5 6 7 8 9 10 校 驗(yàn) 碼 字 符 值 V :1 0 X 9 8 7 6 5 4 3 2 根據(jù)上表,查出計(jì)算結(jié)果為2的校驗(yàn)碼為所以該人員的公民身份號(hào)碼應(yīng)該為 34052419800101001X。
用條件格式檢查身份證校驗(yàn)碼是否正確的方法
18位身份證校驗(yàn)碼是根據(jù)前面十七位數(shù)字碼,按照ISO 7064:1983.MOD 11-2校驗(yàn)碼計(jì)算出來的檢驗(yàn)碼。
為什么除11,在于計(jì)算校驗(yàn)碼時(shí)的函數(shù)。請(qǐng)看下邊的函數(shù):
公式如下:
∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) (公式一)
"*" 表示乘號(hào)
i--------表示身份證號(hào)碼每一位的序號(hào),從右至左,最左側(cè)為18,最右側(cè)為1。
a[i]-----表示身份證號(hào)碼第 i 位上的號(hào)碼
W[i]-----表示第 i 位上的權(quán)值 W[i] = 2^(i-1) mod 11上述計(jì)算方法是從右至左,如果從左至右,第1-17位權(quán)重W[i]的計(jì)算結(jié)果為:
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
計(jì)算公式一 令結(jié)果為 R
根據(jù)下表找出 R 對(duì)應(yīng)的校驗(yàn)碼即為要求身份證號(hào)碼的校驗(yàn)碼C。
R 0 1 2 3 4 5 6 7 8 9 10
C 1 0 X 9 8 7 6 5 4 3 2
由此看出 X 就是 10,羅馬數(shù)字中的 10 就是X,所以在新標(biāo)準(zhǔn)的身份證號(hào)碼中可能含有非數(shù)字的字母X。根據(jù)上述校驗(yàn)碼計(jì)算公式和原理,設(shè)置條件格式檢查校驗(yàn)碼方法如下:
假定身份證在B列(均為18位),檢查其校驗(yàn)碼是否正確,不正確的用紅色字體顯示。方法如下:
選中B列,“格式”/“條件格式”,將條件設(shè)為:
公式=RIGHT(B1)<>MID("10X98765432",MOD(SUMPRODUCT(MID(B$1,ROW(1:17),1)*MOD(2^(18-ROW(1:17)),11)),11)+1,1)點(diǎn)“格式”,將字體設(shè)為紅色即可。