(1) Structure de 18 numéros d'identification
Le numéro d'identité du citoyen est un code combiné caractéristique, composé d'un code corporel à dix-sept chiffres et d'un code de contrôle à un chiffre.
L'ordre de gauche à droite est le suivant : code d'adresse à six chiffres, code de date de naissance à huit chiffres, code de séquence à trois chiffres et code de contrôle à un chiffre.
1. Code d'adresse
Indique le code de division administrative du comté (ville, bannière, district) où se trouve la résidence permanente de l'objet de codage, et doit être mis en œuvre conformément aux dispositions du GB/T2260.
2. Code date de naissance
Indique l'année, le mois et le jour de naissance de l'objet de codage. Il est mis en œuvre conformément aux dispositions du GB/T7408. Il n'y a pas de séparateur entre les codes de l'année, du mois et du jour.
3. Code de séquence
Indique le numéro de séquence attribué aux personnes nées la même année, le même mois et le même jour dans la zone identifiée par le même code d'adresse. Les nombres impairs du code de séquence sont attribués aux hommes et les nombres pairs sont attribués aux femmes.
4. Vérifiez les étapes de calcul du code
(1) Formule de sommation pondérée du code d'ontologie à dix-sept chiffres
S = Somme (Ai * Wi), i = 0, ... , 16, additionnez d'abord les poids des 17 premiers chiffres
Ai : représente la valeur numérique du numéro d'identification à la ième position (0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (indique le facteur de pondération à la i-ième position)
(2) Modèle de calcul
Oui = mod(S, 11)
(3) Selon le module, recherchez le code de contrôle correspondant
Y : 0 1 2 3 4 5 6 7 8 9 10
Code de contrôle : 1 0 X 9 8 7 6 5 4 3 2
(2) Exemple de programme pour obtenir le dernier chiffre du code de contrôle basé sur le code d'ontologie à 17 chiffres
Copiez le code comme suit :
ID de classe publique18 {
int[] poids={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2} //Poids du code corporel à dix-sept chiffres
char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'} ; //mod11, correspondant à la valeur du caractère du code de contrôle
char public getValidateCode(String id17){
somme int=0 ;
mode int=0 ;
pour(int i=0;i<id17.length();i++){
sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
}
mode=somme%11 ;
return valider[mode];
}
public static void main (String[] args){
Id18 test=nouveau Id18();
System.out.println("Ce code de vérification de la carte d'identité :"+test.getValidateCode("14230219700101101")); //Ce code de vérification de la carte d'identité : 3
}
}
(3) Explication
1. Le programme peut obtenir le code de vérification correspondant basé sur le code d'ontologie existant à 17 chiffres.
2. Ce programme peut éliminer les numéros d'identification avec des codes de vérification incorrects.
3. L'année de naissance de la carte d'identité à 15 chiffres utilise les 2 derniers chiffres de l'année, sans le dernier chiffre du code de contrôle.
4. Une carte d'identité complète comporte 18 chiffres et le dernier chiffre de contrôle peut être autre qu'un chiffre. Dans l'un de nos projets, la base de données enregistre les 17 premiers chiffres, ce qui peut accélérer certaines instructions SQL (comme la jointure interne) ! ! !