黄聡:jquery検査中国身分証明書番号
2326 ワード
大陸18位身分証明書(第2世代身分証明書)
アイデンティティ番号は、17ビットのデジタルボリュームコードと1ビットの検証コードからなる特徴的な組合せコードのセットである.
配列順序は左から右に6桁のデジタル地域コード、8桁のデジタル誕生日コード、3桁のデジタル順序コード、1桁のデジタル検証コードの順である.
検証方法:
(1)まず上位17桁の数字の重みを求める.
S = Sum(Ci * Vi), i = 0, ... , 16
Ci:身分証明書番号のi番目の位置を示す数値
Vi:i番目の位置を示す「重み係数」重み係数Vi:7 9 10 5 8 4 2 1 6 3 7 10 5 8 2
(2)計算モード(固定アルゴリズム)
Y = mod(S, 11)
(3)計算モードYと対応する検査コードをY:0 1 2 3 4 5 6 7 8 10(Yにより対応する検査コードと身分証明書の第18ビット検査を取得)検査コード:1 0 X 9 8 7 6 4 2
アイデンティティ番号は、17ビットのデジタルボリュームコードと1ビットの検証コードからなる特徴的な組合せコードのセットである.
配列順序は左から右に6桁のデジタル地域コード、8桁のデジタル誕生日コード、3桁のデジタル順序コード、1桁のデジタル検証コードの順である.
検証方法:
(1)まず上位17桁の数字の重みを求める.
S = Sum(Ci * Vi), i = 0, ... , 16
Ci:身分証明書番号のi番目の位置を示す数値
Vi:i番目の位置を示す「重み係数」重み係数Vi:7 9 10 5 8 4 2 1 6 3 7 10 5 8 2
(2)計算モード(固定アルゴリズム)
Y = mod(S, 11)
(3)計算モードYと対応する検査コードをY:0 1 2 3 4 5 6 7 8 10(Yにより対応する検査コードと身分証明書の第18ビット検査を取得)検査コード:1 0 X 9 8 7 6 4 2
function check_id(value){
var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//
var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//
if(/^\d{17}\d|x$/i.test(value)){
var sum = 0, idx;
for(var i = 0; i < value.length - 1; i++){
// 17
sum += parseInt(value.substr(i, 1), 10) * arrExp[i];
}
// ( )
idx = sum % 11;
// 18
return arrValid[idx] == value.substr(17, 1).toUpperCase();
}else{
return false;
}
}