身份證校驗碼

身份證校驗碼

身份證号碼的最後一位
身份證号碼中的校驗碼是身份證号碼的最後一位,是根據〖中華人民共和國國家标準GB 11643-1999〗中有關公民身份号碼的規定,根據精密的計算公式計算出來的,公民身份号碼是特征組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼,最後一位是數字校驗碼。
  • 中文名:身份證校驗碼
  • 外文名:
  • 别名:
  • 概念:身份證号碼的最後一位
  • 根據:GB 11643-1999
  • 應用于:身份證

依據

身份證最後一位是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。作為尾号的校驗碼,是由号碼編制單位按統一的公式計算出來的,如果某人的尾号是0-9,都不會出現X,但如果尾号是10,那麼就得用X來代替,因為如果用10做尾号,那麼此人的身份證就變成了19位,而19位的号碼違反了國家标準,并且我國的計算機應用系統也不承認19位的身份證号碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家标準。

計算方法

1、将前面的身份證号碼17位數分别乘以不同的系數。第i位對應的數為[2^(18-i)]mod11。從第一位到第十七位的系數分别為:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2;

2、将這17位數字和系數相乘的結果相加;

3、用加出來和除以11,看餘數是多少?;

4、餘數隻可能有0、1、2、3、4、5、6、7、8、9、10這11個數字。其分别對應的最後一位身份證的号碼為1、0、X、9、8、7、6、5、4、3、2;

5、通過上面得知如果餘數是2,就會在身份證的第18位數字上出現羅馬數字的Ⅹ。如果餘數是10,身份證的最後一位号碼就是2;

例如:某男性的身份證号碼是34052419800101001X。我們要看看這個身份證是不是合法的身份證。

首先:我們得出,前17位的乘積和是189

然後:用189除以11得出的結果是17+2/11,也就是說餘數是2。

最後:通過對應規則就可以知道餘數2對應的數字是x。所以,這是一個合格的身份證号碼。

計算公式

PHP計算公式:

$card="xxx";//身份證号碼

$map=array(1,0,X,9,8,7,6,5,4,3,2);

$sum=0;

for($i=17;$i0;$i--){

$s=pow(2,$i)%11;

$sum+=$s*$card[17-$i];

}

echo$map[$sum%11];//這裡顯示最後一位校驗碼

Excel:

請在A1單元格輸入18位身份證号碼.

有的時候需要修改單元格的格式為文本,否則數字會被取近似值.

然後在任意單元格輸入下面的公式就可以得到校驗碼.

看看是否與最後一位相符.就知道身份證号碼是否符合編碼規則了.

=LOOKUP(MOD(MID($A$1,1,1)*MOD(2^17,11)+MID($A$1,2,1)*MOD(2^16,11)+MID($A$1,3,1)*MOD(2^15,11)+MID($A$1,4,1)*MOD(2^14,11)+MID($A$1,5,1)*MOD(2^13,11)+MID($A$1,6,1)*MOD(2^12,11)+MID($A$1,7,1)*MOD(2^11,11)+MID($A$1,8,1)*MOD(2^10,11)+MID($A$1,9,1)*MOD(2^9,11)+MID($A$1,10,1)*MOD(2^8,11)+MID($A$1,11,1)*MOD(2^7,11)+MID($A$1,12,1)*MOD(2^6,11)+MID($A$1,13,1)*MOD(2^5,11)+MID($A$1,14,1)*MOD(2^4,11)+MID($A$1,15,1)*MOD(2^3,11)+MID($A$1,16,1)*MOD(2^2,11)+MID($A$1,17,1)*MOD(2^1,11),11),{0;1;2;3;4;5;6;7;8;9;10},{1;0;"X";9;8;7;6;5;4;3;2})

用數組公式計算:=MID("10X98765432",MOD(SUM(MID($A$1,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)按ctrl+shift+Enter計算

除以公式外

可以直接使用的簡化參考公式如下兩種:(以下皆為數組公式,身份證号碼在B2單元格)

一、按規則

文字表達:将2的17次幂+2的16次幂+……+2的1次幂分别對應乘以身份證号碼的1-17位數字,最後求和,再除以11,餘數對應相應的字符

{=LOOKUP(MOD(SUM(2^{17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1}*MID($B2,ROW($1:$17),1)),11),{0,1;1,0;2,"X";3,9;4,8;5,7;6,6;7,5;8,4;9,3;10,2})}

二、按規律取數

文字表達:将身份證号碼1-17位數字,分别乘以給定數字後求和,再除以11,餘數對應相應的字符

{=LOOKUP(MOD(SUM(MID($B2,ROW($1:$17),1)*{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}),11),{0,1;1,0;2,"X";3,9;4,8;5,7;6,6;7,5;8,4;9,3;10,2})}

上一篇:false

下一篇:堯都區

相關詞條

相關搜索

其它詞條