(1) Struktur der 18 ID-Nummer
Die Bürgeridentitätsnummer ist ein charakteristischer Kombinationscode, der aus einem siebzehnstelligen Körpercode und einem einstelligen Prüfcode besteht.
Die Reihenfolge von links nach rechts ist: sechsstelliger Adresscode, achtstelliger Geburtsdatumscode, dreistelliger Sequenzcode und einstelliger Prüfcode.
1. Adresscode
Gibt den Verwaltungsbereichscode des Landkreises (Stadt, Banner, Bezirk) an, in dem sich der ständige Wohnsitz des Kodierungsobjekts befindet, und muss gemäß den Bestimmungen von GB/T2260 implementiert werden.
2. Geburtsdatumscode
Gibt das Jahr, den Monat und den Tag der Geburt des Codierungsobjekts an. Es wird gemäß den Bestimmungen von GB/T7408 implementiert. Es gibt kein Trennzeichen zwischen den Jahres-, Monats- und Tagescodes.
3. Sequenzcode
Gibt an, dass innerhalb des durch denselben Adresscode identifizierten Bereichs die Sequenznummern Personen zugewiesen werden, die im selben Jahr, Monat und Tag geboren sind. Die ungeraden Nummern der Sequenzcodes werden Männern zugewiesen, und die geraden Nummern werden Frauen zugewiesen .
4. Überprüfen Sie die Codeberechnungsschritte
(1) Gewichtete Summationsformel des siebzehnstelligen Ontologiecodes
S = Sum(Ai * Wi), i = 0, ... , 16, summiere zuerst die Gewichte der ersten 17 Ziffern
Ai: stellt den digitalen Wert der ID-Nummer an der i-ten Position dar (0 ~ 9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (gibt den Gewichtungsfaktor an der i-ten Position an)
(2) Berechnungsmodell
Y = mod(S, 11)
(3) Suchen Sie je nach Modul den entsprechenden Prüfcode
Y: 0 1 2 3 4 5 6 7 8 9 10
Prüfcode: 1 0 X 9 8 7 6 5 4 3 2
(2) Programmbeispiel zum Erhalten der letzten Ziffer des Prüfcodes basierend auf dem 17-stelligen Ontologiecode
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse Id18 {
int[]weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2} //Siebzehnstelliges Ontologiecodegewicht
char[] validieren={ '1','0','X','9','8','7','6','5','4','3','2'} ; //mod11, entsprechend dem Prüfcode-Zeichenwert
öffentliches Zeichen getValidateCode(String id17){
int sum=0;
int mode=0;
for(int i=0;i<id17.length();i++){
sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
}
mode=sum%11;
return validieren[Modus];
}
public static void main(String[] args){
Id18 test=new Id18();
System.out.println("Verifizierungscode dieser ID-Karte:"+test.getValidateCode("14230219700101101")); //Verifizierungscode dieser ID-Karte: 3
}
}
(3) Erläuterung
1. Das Programm kann den entsprechenden Verifizierungscode basierend auf dem vorhandenen 17-stelligen Ontologiecode erhalten.
2. Dieses Programm kann ID-Nummern mit falschen Verifizierungscodes entfernen.
3. Das Geburtsjahr des 15-stelligen Personalausweises verwendet die letzten beiden Ziffern des Jahres, ohne die letzte Ziffer des Prüfcodes.
4. Ein vollständiger Personalausweis hat 18 Ziffern und die letzte Prüfziffer kann eine Nichtziffer sein. In einem unserer Projekte speichert die Datenbank die ersten 17 Ziffern, was einige SQL-Anweisungen (z. B. Inner Join) beschleunigen kann! ! !