Generator CURP
Introducere
CURP (Clave Única de Registro de Población) este un cod alfanumeric unic folosit în Mexic pentru scopuri de identificare. Acest instrument generează CURP-uri valide, aleatorii pentru scenarii de testare, conform formatului oficial și regulilor de validare. Este important de menționat că aceste CURP-uri generate nu sunt legate de persoane reale și ar trebui folosite doar în scopuri de testare.
Structura CURP
Un CURP constă din 18 caractere în următorul format:
- Prima literă a numelui de familie patern
- Prima vocală a numelui de familie patern (excluzând prima literă)
- Prima literă a numelui de familie matern
- Prima literă a numelui dat 5-10. Data nașterii (format YYMMDD)
- Gen (H pentru bărbat, M pentru femeie) 12-13. Cod de două litere pentru statul de naștere 14-16. Prima consoană internă din fiecare componentă a numelui (numele de familie patern, numele de familie matern, numele dat)
- Digit de diferențiere (0-9 pentru persoanele născute înainte de 2000, A-Z pentru cei născuți din 2000 încoace)
- Digit de verificare (0-9)
Algoritm pentru Generarea unui CURP Aleatoriu
- Generați litere aleatorii pentru componentele numelui
- Generați o dată de naștere aleatorie
- Selectați aleatoriu genul
- Selectați aleatoriu un cod de stat valid
- Generați consoane aleatorii pentru componentele interne ale numelui
- Determinați digitul de diferențiere pe baza anului nașterii
- Calculați digitul de verificare
- Combinați toate componentele pentru a forma CURP-ul
Regulile de Validare
- Toate caracterele alfabetice trebuie să fie cu majuscule
- Data nașterii trebuie să fie o dată validă (inclusiv considerația anului bisect)
- Codul de stat trebuie să fie un cod valid pentru un stat mexican
- Digitul de diferențiere trebuie să corespundă anului nașterii
- Digitul de verificare trebuie să fie calculat corect
- Tratați cazurile speciale pentru nume (de exemplu, nume de familie cu o singură literă, nume cu Ñ)
Cazuri de Utilizare
-
Testarea Software-ului: Dezvoltatorii pot folosi acest instrument pentru a genera CURP-uri valide pentru testarea sistemelor de înregistrare a utilizatorilor, operațiunilor de bază de date sau orice software care necesită introducerea CURP.
-
Confidențialitatea Datelor: Atunci când se demonstrează software sau se prezintă date, utilizarea CURP-urilor generate aleatoriu ajută la protejarea confidențialității indivizilor.
-
Testarea Performanței: Generați seturi mari de CURP-uri unice pentru a testa performanța sistemului sub sarcină.
-
Formare și Educație: Utilizați CURP-uri generate în materialele educaționale despre sistemele de identificare din Mexic fără a folosi date personale reale.
Istoria CURP în Mexic
Sistemul CURP a fost introdus în 1996 de către guvernul mexican ca parte a unui efort de modernizare și standardizare a identificării personale. A înlocuit diverse alte sisteme de identificare și a devenit un element crucial în birocrația mexicană, utilizat pentru totul, de la înscrierea în școli până la depunerea impozitelor.
De-a lungul anilor, sistemul CURP a suferit mai multe modificări:
- În 2011, digitul de diferențiere a fost introdus pentru a distinge între persoanele născute înainte și după 2000.
- În 2012, algoritmul pentru calcularea digitului de verificare a fost modificat pentru a îmbunătăți unicitatea.
Exemple
Iată exemple de cod pentru a genera CURP-uri aleatorii în diferite limbaje de programare:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generați componentele numelui
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generați data nașterii
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")
# Generați genul
gender = random.choice(['H', 'M'])
# Generați codul de stat
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)
# Generați consoane
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generați digitul de diferențiere
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generați digitul de verificare (simplificat pentru acest exemplu)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generați și imprimați un CURP aleatoriu
print(generate_curp())
Alternative în Alte Țări
Deși CURP este unic pentru Mexic, alte țări au sisteme de identificare similare:
- Statele Unite: Numărul de Securitate Socială (SSN)
- Canada: Numărul de Asigurare Socială (SIN)
- India: Numărul Aadhaar
- Brazilia: Cadastro de Pessoas Físicas (CPF)
Fiecare sistem are propria structură și reguli, dar îndeplinesc scopuri similare în țările respective.
Referințe
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Accesat pe 4 Aug. 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. Accesat pe 4 Aug. 2024.