(1) Struktur 18 nomor ID
Nomor Identitas Warga Negara merupakan kode kombinasi ciri yang terdiri atas tujuh belas digit kode badan dan satu digit kode cek.
Urutan dari kiri ke kanan adalah: enam digit kode alamat, delapan digit kode tanggal lahir, tiga digit kode urut, dan satu digit kode cek.
1. Kode alamat
Menunjukkan kode pembagian wilayah administratif kabupaten (kota, spanduk, distrik) di mana tempat tinggal tetap objek pengkodean berada, dan dilaksanakan sesuai dengan ketentuan GB/T2260.
2. Kode tanggal lahir
Menunjukkan tahun, bulan, dan hari lahir objek pengkodean. Diimplementasikan sesuai dengan ketentuan GB/T7408. Tidak ada pemisah antara kode tahun, bulan, dan hari.
3. Kode urutan
Menunjukkan bahwa dalam wilayah yang diidentifikasi dengan kode alamat yang sama, nomor urut ditetapkan untuk orang yang lahir pada tahun, bulan, dan hari yang sama. Nomor ganjil dari kode urut tersebut diberikan kepada laki-laki, dan nomor genap diberikan kepada perempuan .
4. Periksa langkah perhitungan kode
(1) Rumus penjumlahan tertimbang dari kode ontologi tujuh belas digit
S = Jumlah(Ai * Wi), i = 0, ... , 16, jumlahkan dulu bobot 17 digit pertama
Ai: mewakili nilai digital nomor ID pada posisi ke-i (0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (menunjukkan faktor pembobotan pada posisi ke-i)
(2) Model perhitungan
Y = mod(S, 11)
(3) Menurut modul, temukan kode cek yang sesuai
Y: 0 1 2 3 4 5 6 7 8 9 10
Kode cek : 1 0 X 9 8 7 6 5 4 3 2
(2) Contoh program untuk memperoleh digit terakhir kode cek berdasarkan 17 digit kode ontologi
Copy kode kodenya sebagai berikut:
Id kelas publik18 {
int[] bobot={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //Bobot kode ontologi tujuh belas digit
karakter[] validasi={ '1','0','X','9','8','7','6','5','4','3','2'} ; //mod11, sesuai dengan nilai karakter kode cek
karakter publik getValidateCode(String id17){
int jumlah=0;
mode ke dalam=0;
untuk(int i=0;i<id17.length();i++){
jumlah=jumlah+Bilangan Bulat.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
}
modus=jumlah%11;
kembali validasi[mode];
}
public static void main(String[] args){
Tes Id18=Id18 baru();
System.out.println("Kode verifikasi KTP ini:"+test.getValidateCode("14230219700101101")); //Kode verifikasi KTP ini: 3
}
}
(3) Penjelasan
1. Program dapat memperoleh kode verifikasi yang sesuai berdasarkan kode ontologi 17 digit yang ada.
2. Program ini dapat menghilangkan nomor ID dengan kode verifikasi yang salah.
3. Tahun lahir KTP 15 digit menggunakan 2 digit terakhir tahun, tanpa 1 digit terakhir kode cek.
4. KTP yang lengkap terdiri dari 18 digit, dan digit pemeriksa terakhir boleh berupa bukan digit. Dalam salah satu proyek kami, database menyimpan 17 digit pertama, yang dapat mempercepat beberapa pernyataan SQL (seperti inner join)! ! !