身份證是國民的身份編號(hào),編號(hào)是有一定規(guī)律的,這里介紹身份證驗(yàn)證規(guī)則比較詳細(xì)。
下面我說一下15位跟18位身份證號(hào)的區(qū)別:
15位的身份證號(hào)
dddddd yymmdd xx p
18位的身份證號(hào)
dddddd yyyymmdd xx p y
其中dddddd為地址碼(省地縣三級(jí))18位中的和15位中的不完全相同
yyyymmdd yymmdd 為出生年月日
xx順號(hào)類編碼
p性別
將前17位的ascii碼值經(jīng)位移、異或運(yùn)算結(jié)果不在0-9的令其為x
這里我們可以看出15位跟18位的?出生年和校驗(yàn)碼有區(qū)別
我下面說一下我們會(huì)用到的校驗(yàn)碼的計(jì)算方法:
將前面的身份證號(hào)碼17位數(shù)分別乘以不同的系數(shù)。從第一位到第十七位的系數(shù)分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2偶洋。
將這17位數(shù)字和系數(shù)相乘的結(jié)果相加。
用加出來和除以11距糖,看余數(shù)是多少玄窝? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
余數(shù)只可能有0-1-2-3-4-5-6-7-8-9-10這11個(gè)數(shù)字。其分別對(duì)應(yīng)的最后一位身份證的號(hào)碼為1-0-X -9-8-7-6-5-4-3-2悍引。
通過上面得知如果余數(shù)是3恩脂,就會(huì)在身份證的第18位數(shù)字上出現(xiàn)的是9。如果對(duì)應(yīng)的數(shù)字是10趣斤,身份證的最后一位號(hào)碼就是羅馬數(shù)字x俩块。
例如:某男性的身份證號(hào)碼為【53010219200508011x】, 我們看看這個(gè)身份證是不是合法的身份證浓领。
首先我們得出前17位的乘積和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189玉凯,然后用189除以11得出的結(jié)果是189/11=17----2,也就是說其余數(shù)是2联贩。最后通過對(duì)應(yīng)規(guī)則就可以知道余數(shù)2對(duì)應(yīng)的檢驗(yàn)碼是X漫仆。所以,可以判定這是一個(gè)正確的身份證號(hào)碼泪幌。
身份證個(gè)特征碼代表意義(僅限18位身份證)
知道驗(yàn)證規(guī)則就比較好辦了盲厌,根據(jù)驗(yàn)證規(guī)則校驗(yàn)就可以了。
首先我們驗(yàn)證公民身份證的地區(qū)特征碼 代碼如下:
這段我只是做了簡單的省代碼驗(yàn)證祸泪, 由于縣級(jí)以上的區(qū)域劃分代碼太多吗浩,我就不做前6位所有地區(qū)的校驗(yàn)了(后續(xù)校驗(yàn)碼計(jì)算也會(huì)用到前面的6位地區(qū)碼 個(gè)人感覺不用做的那么細(xì),有興趣的話大家可以嘗試下)
接下來是時(shí)間的合法性校驗(yàn)這里對(duì)于15位和18位的身份證會(huì)有所區(qū)別:
15位校驗(yàn)時(shí)間合法性
18位校驗(yàn)時(shí)間合法性和檢驗(yàn)碼合法性
上面我們說了15位跟18位身份證 在出生年和校驗(yàn)碼上有區(qū)別我分別對(duì)他們做了特殊處理没隘,使用正則給身份證號(hào)碼做格式校驗(yàn)(包括時(shí)間校驗(yàn))?15位的只做了時(shí)間的合法性驗(yàn)證懂扼, 18位的多一個(gè)校驗(yàn)碼校驗(yàn) 。根據(jù)計(jì)算公式升略。計(jì)算公式是從第一位到第十七位的系數(shù)分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2微王。將身份證前17位數(shù)字和這些系數(shù)相乘的結(jié)果相加,再除以11品嚣,得到看余數(shù)然后是幾? 然后看對(duì)應(yīng)1-0-X -9-8-7-6-5-4-3-2里面的第幾個(gè)就是校驗(yàn)碼,然后與原始數(shù)據(jù)最后一位比較钧大。
總結(jié)
身份證校驗(yàn)?zāi)壳?5位的身份證已經(jīng)作廢 ?個(gè)人覺得如果為保障一人只有一張卡的話最好把15位的驗(yàn)證過濾掉 防止一個(gè)人同時(shí)使用新舊兩個(gè)身份證
身份證校驗(yàn)只要知道計(jì)算公式其實(shí)計(jì)算進(jìn)行校驗(yàn)很簡單 只要記住相乘系數(shù)和對(duì)應(yīng)校驗(yàn)碼就直接可以計(jì)算出校驗(yàn)碼來進(jìn)行比較
第一次寫簡書 寫的不好請(qǐng)見諒