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:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Hasilkan komponen nama
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Hasilkan tarikh lahir
start_date = datetime(1940, 1, 1)
end_date = datetime.now()
random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
date_str = random_date.strftime("%y%m%d")
# Hasilkan jantina
gender = random.choice(['H', 'M'])
# Hasilkan kod negeri
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']
state = random.choice(states)
# Hasilkan konsonan
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Hasilkan digit pembezaan
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Hasilkan digit semak (dipermudahkan untuk contoh ini)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Hasilkan dan cetak CURP rawak
print(generate_curp())
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.