Random CURP Generator for Testing Purposes and Validation
Hasilkan CURP (Clave Única de Registro de Población) yang sah dan rawak untuk tujuan ujian. Alat ini mencipta CURP yang mematuhi format dan peraturan pengesahan rasmi Mexico, tanpa menggunakan maklumat peribadi yang sebenar.
Hasilkan CURP
Dokumentasi
Penjana CURP
Pengenalan
CURP (Clave Única de Registro de Población) adalah kod alfanumerik unik yang digunakan di Mexico untuk tujuan pengenalan. Alat ini menjana CURP yang sah dan rawak untuk senario ujian, mematuhi format rasmi dan peraturan pengesahan. Adalah penting untuk diperhatikan bahawa CURP yang dijana ini tidak terikat dengan individu sebenar dan hanya boleh digunakan untuk tujuan ujian.
Struktur CURP
CURP terdiri daripada 18 aksara dalam format berikut:
- Huruf pertama nama bapa
- Huruf vokal pertama nama bapa (tidak termasuk huruf pertama)
- Huruf pertama nama ibu
- Huruf pertama nama diberikan 5-10. Tarikh lahir (format YYMMDD)
- Jantina (H untuk lelaki, M untuk perempuan) 12-13. Kod dua huruf untuk negeri kelahiran 14-16. Konsonan dalaman pertama bagi setiap komponen nama (nama bapa, nama ibu, nama diberikan)
- Digit pembezaan (0-9 untuk orang yang dilahirkan sebelum 2000, A-Z untuk mereka yang dilahirkan dari 2000 dan seterusnya)
- Digit semak (0-9)
Algoritma untuk Menjana CURP Rawak
- Hasilkan huruf rawak untuk komponen nama
- Hasilkan tarikh lahir rawak
- Pilih jantina secara rawak
- Pilih kod negeri yang sah secara rawak
- Hasilkan konsonan rawak untuk komponen nama dalaman
- Tentukan digit pembezaan berdasarkan tahun kelahiran
- Kira digit semak
- Gabungkan semua komponen untuk membentuk CURP
Peraturan Pengesahan
- Semua aksara alfabetik mesti dalam huruf besar
- Tarikh lahir mesti merupakan tarikh yang sah (termasuk pertimbangan tahun lompat)
- Kod negeri mesti merupakan kod negeri Mexico yang sah
- Digit pembezaan mesti sepadan dengan tahun kelahiran
- Digit semak mesti dikira dengan betul
- Tangani kes khas untuk nama (contohnya, nama keluarga satu huruf, nama dengan Ñ)
Kes Penggunaan
-
Ujian Perisian: Pembangun boleh menggunakan alat ini untuk menjana CURP yang sah untuk menguji sistem pendaftaran pengguna, operasi pangkalan data, atau mana-mana perisian yang memerlukan input CURP.
-
Privasi Data: Apabila mendemonstrasikan perisian atau membentangkan data, menggunakan CURP yang dijana secara rawak membantu melindungi privasi individu.
-
Ujian Prestasi: Hasilkan set CURP unik yang besar untuk menguji prestasi sistem di bawah beban.
-
Latihan dan Pendidikan: Gunakan CURP yang dijana dalam bahan pendidikan tentang sistem pengenalan Mexico tanpa menggunakan data peribadi sebenar.
Sejarah CURP di Mexico
Sistem CURP diperkenalkan pada tahun 1996 oleh kerajaan Mexico sebagai sebahagian daripada usaha untuk memodenkan dan menstandardkan pengenalan peribadi. Ia menggantikan pelbagai sistem pengenalan lain dan menjadi elemen penting dalam birokrasi Mexico, digunakan untuk segala-galanya dari pendaftaran sekolah hingga pengisian cukai.
Sepanjang tahun, sistem CURP telah melalui beberapa pengubahsuaian:
- Pada tahun 2011, digit pembezaan diperkenalkan untuk membezakan antara orang yang dilahirkan sebelum dan selepas 2000.
- Pada tahun 2012, algoritma untuk mengira digit semak telah diubahsuai untuk meningkatkan keunikan.
Contoh
Berikut adalah contoh kod untuk menjana CURP rawak dalam pelbagai bahasa pengaturcaraan:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Hasilkan komponen nama
7 paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
8 maternal = random.choice(string.ascii_uppercase)
9 given = random.choice(string.ascii_uppercase)
10
11 # Hasilkan tarikh lahir
12 start_date = datetime(1940, 1, 1)
13 end_date = datetime.now()
14 random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
15 date_str = random_date.strftime("%y%m%d")
16
17 # Hasilkan jantina
18 gender = random.choice(['H', 'M'])
19
20 # Hasilkan kod negeri
21 states = ['AS', 'BC', 'BS', 'CC', 'CL', 'CM', 'CS', 'CH', 'DF', 'DG', 'GT', 'GR', 'HG', 'JC', 'MC', 'MN', 'MS', 'NT', 'NL', 'OC', 'PL', 'QT', 'QR', 'SP', 'SL', 'SR', 'TC', 'TS', 'TL', 'VZ', 'YN', 'ZS']
22 state = random.choice(states)
23
24 # Hasilkan konsonan
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Hasilkan digit pembezaan
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Hasilkan digit semak (dipermudahkan untuk contoh ini)
31 check_digit = random.choice(string.digits)
32
33 return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
34
35## Hasilkan dan cetak CURP rawak
36print(generate_curp())
37
1function generateCURP() {
2 const vowels = 'AEIOU';
3 const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
4 const states = ['AS', 'BC', 'BS', 'CC', 'CL', 'CM', 'CS', 'CH', 'DF', 'DG', 'GT', 'GR', 'HG', 'JC', 'MC', 'MN', 'MS', 'NT', 'NL', 'OC', 'PL', 'QT', 'QR', 'SP', 'SL', 'SR', 'TC', 'TS', 'TL', 'VZ', 'YN', 'ZS'];
5
6 const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
7 const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
8 const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];
9
10 const paternal = randomLetter() + randomVowel();
11 const maternal = randomLetter();
12 const given = randomLetter();
13
14 const now = new Date();
15 const start = new Date(1940, 0, 1);
16 const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
17 const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');
18
19 const gender = Math.random() < 0.5 ? 'H' : 'M';
20 const state = states[Math.floor(Math.random() * states.length)];
21
22 const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();
23
24 const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ?
25 Math.floor(Math.random() * 10).toString() :
26 String.fromCharCode(65 + Math.floor(Math.random() * 26));
27
28 const checkDigit = Math.floor(Math.random() * 10).toString();
29
30 return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
31}
32
33// Hasilkan dan log CURP rawak
34console.log(generateCURP());
35
Alternatif di Negara Lain
Walaupun CURP adalah unik untuk Mexico, negara lain mempunyai sistem pengenalan yang serupa:
- Amerika Syarikat: Nombor Jaminan Sosial (SSN)
- Kanada: Nombor Insurans Sosial (SIN)
- India: Nombor Aadhaar
- Brazil: Cadastro de Pessoas Físicas (CPF)
Setiap sistem mempunyai struktur dan peraturannya sendiri, tetapi mereka berfungsi untuk tujuan yang serupa di negara masing-masing.
Rujukan
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Diakses 4 Ogos 2024.
- RENAPO (Registro Nacional de Población e Identidad). "Instructivo Normativo para la Asignación de la Clave Única de Registro de Población." Gobierno de México, https://www.gob.mx/cms/uploads/attachment/file/79053/InstructivoNormativoCURP.pdf. Diakses 4 Ogos 2024.
Maklum balas
Klik toast maklum balas untuk mula memberi maklum balas tentang alat ini
Alat Berkaitan
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda