我們要驗證身份證號是否正確,就得先了解身份證號的含意。 身份證號都代表什么意思? 1、號碼的結(jié)構(gòu) 公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗碼。 2、地址碼(前六位數(shù)) 表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按GB/T2260的規(guī)定執(zhí)行。 3、出生日期碼(第七位至十四位) 表示編碼對象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。 4、順序碼(第十五位至十七位) 表示在同一地址碼所標(biāo)識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人編定的順序號,順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。 5、校驗碼(第十八位數(shù)) (1)十七位數(shù)字本體碼加權(quán)求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先對前17位數(shù)字的權(quán)求和 Ai:表示第i位置上的身份證號碼數(shù)字值 Wi:表示第i位置上的加權(quán)因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)計算模 Y = mod(S, 11) (3)通過模得到對應(yīng)的校驗碼 Y: 0 1 2 3 4 5 6 7 8 9 10 校驗碼: 1 0 X 9 8 7 6 5 4 3 2 所以我們就可以大致寫一個函數(shù)來校驗是否正確了。
|