2世代認証の例
1871 ワード
(一)18身分証明書番号の構成
公民身分番号は特徴組合せコードであり、17ビットのデジタル本体コードと1つの検査コードから構成されている.
配列順序は左から右に6桁のデジタルアドレスコード、8桁のデジタル生年月日コード、3桁のデジタル順序コード、1桁の検査コードの順である.1、住所コードはコード対象の常住戸籍所在県(市、旗、区)の行政区域区分コードを表し、GB/T 2260の規定に従って実行する.2、生年月日コードは符号化対象の生年月日を表し、GB/T 7408の規定に従って実行し、年、月、日コードの間に区切り記号を使わない.3、シーケンシャルコードは、同一アドレスコードが示す領域範囲内で、同年、同月、同日生まれの人に対して定められたシーケンシャル番号を示し、シーケンシャルコードの奇数は男性に、偶数は女性に割り当てられる.4、検査コード計算手順
(1)十七ビットデジタル本体コード重み付け加算式S=Sum(Ai*Wi),i=0,...,16,まず上位17桁の重み和Ai:i番目の位置を示す身分証明書番号数字値(0~9)Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 4 2(i番目の位置の重み係数を示す)(2)計算モードY=mod(S,11)
(3)型により、対応する検査コードY:0 1 2 3 4 5 6 7 8 9 10検査コード:1 0 X 9 8 7 6 5 4 3 2を検索する
(二)17ビットデジタルボリュームコードから最後のビット検証コードを取得するプログラムの例
(三)説明
1.プログラムは、既存の17ビットのデジタルボリュームコードに基づいて、対応する検証コードを取得することができる.
2.このプログラムは、認証コードが正しくない身分証明書番号を取り除くことができる.
3.15ビットの身分証明書は生年後2ビットを採用し、最後の1ビットの検査コードがない.
4.完全な身分証明書は18ビットで、最後の検証ビットは非数値である可能性があります.私达の1つのプロジェクト、データベースは前の17桁の数字を保存して、このようにいくつかのSQL文(例えばinner join)に対応して加速作用があります!!!
公民身分番号は特徴組合せコードであり、17ビットのデジタル本体コードと1つの検査コードから構成されている.
配列順序は左から右に6桁のデジタルアドレスコード、8桁のデジタル生年月日コード、3桁のデジタル順序コード、1桁の検査コードの順である.1、住所コードはコード対象の常住戸籍所在県(市、旗、区)の行政区域区分コードを表し、GB/T 2260の規定に従って実行する.2、生年月日コードは符号化対象の生年月日を表し、GB/T 7408の規定に従って実行し、年、月、日コードの間に区切り記号を使わない.3、シーケンシャルコードは、同一アドレスコードが示す領域範囲内で、同年、同月、同日生まれの人に対して定められたシーケンシャル番号を示し、シーケンシャルコードの奇数は男性に、偶数は女性に割り当てられる.4、検査コード計算手順
(1)十七ビットデジタル本体コード重み付け加算式S=Sum(Ai*Wi),i=0,...,16,まず上位17桁の重み和Ai:i番目の位置を示す身分証明書番号数字値(0~9)Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 4 2(i番目の位置の重み係数を示す)(2)計算モードY=mod(S,11)
(3)型により、対応する検査コードY:0 1 2 3 4 5 6 7 8 9 10検査コード:1 0 X 9 8 7 6 5 4 3 2を検索する
(二)17ビットデジタルボリュームコードから最後のビット検証コードを取得するプログラムの例
public class Id18 {
int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //
char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'}; //mod11,
public char getValidateCode(String id17){
int sum=0;
int mode=0;
for(int i=0;i sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
}
mode=sum%11;
return validate[mode];
}
public static void main(String[] args){
Id18 test=new Id18();
System.out.println(" :"+test.getValidateCode("14230219700101101")); // :3
}
}
(三)説明
1.プログラムは、既存の17ビットのデジタルボリュームコードに基づいて、対応する検証コードを取得することができる.
2.このプログラムは、認証コードが正しくない身分証明書番号を取り除くことができる.
3.15ビットの身分証明書は生年後2ビットを採用し、最後の1ビットの検査コードがない.
4.完全な身分証明書は18ビットで、最後の検証ビットは非数値である可能性があります.私达の1つのプロジェクト、データベースは前の17桁の数字を保存して、このようにいくつかのSQL文(例えばinner join)に対応して加速作用があります!!!