Generátor CURP
Úvod
CURP (Clave Única de Registro de Población) je jedinečný alfanumerický kód používaný v Mexiku na identifikačné účely. Tento nástroj generuje platné, náhodné CURP pre testovacie scenáre, ktoré spĺňajú oficiálny formát a validačné pravidlá. Je dôležité poznamenať, že tieto generované CURP nie sú spojené s reálnymi osobami a mali by sa používať iba na testovacie účely.
Štruktúra CURP
CURP sa skladá z 18 znakov v nasledujúcom formáte:
- Prvá písmeno priezviska otca
- Prvá samohláska priezviska otca (s výnimkou prvého písmena)
- Prvá písmeno priezviska matky
- Prvá písmeno krstného mena 5-10. Dátum narodenia (formát YYMMDD)
- Pohlavie (H pre mužov, M pre ženy) 12-13. Dvojpísmenový kód pre štát narodenia 14-16. Prvá vnútorná spoluhláska každého komponentu mena (priezvisko otca, priezvisko matky, krstné meno)
- Rozlišovací číslo (0-9 pre osoby narodené pred rokom 2000, A-Z pre tých, ktorí sa narodili od roku 2000)
- Kontrolný číslo (0-9)
Algoritmus na generovanie náhodného CURP
- Generujte náhodné písmená pre komponenty mena
- Generujte náhodný dátum narodenia
- Náhodne vyberte pohlavie
- Náhodne vyberte platný štátny kód
- Generujte náhodné spoluhlásky pre vnútorné komponenty mena
- Určte rozlišovací číslo na základe roku narodenia
- Vypočítajte kontrolný číslo
- Kombinujte všetky komponenty na vytvorenie CURP
Pravidlá validácie
- Všetky abecedné znaky musia byť veľké písmená
- Dátum narodenia musí byť platný dátum (vrátane zohľadnenia prestupných rokov)
- Štátny kód musí byť platný mexický štátny kód
- Rozlišovací číslo musí zodpovedať roku narodenia
- Kontrolný číslo musí byť správne vypočítané
- Riešte špeciálne prípady pre mená (napr. jednolitterové priezviská, mená s Ñ)
Prípady použitia
-
Testovanie softvéru: Vývojári môžu tento nástroj použiť na generovanie platných CURP pre testovanie systémov registrácie používateľov, databázových operácií alebo akéhokoľvek softvéru, ktorý vyžaduje vstup CURP.
-
Ochrana údajov: Pri demonštrácii softvéru alebo prezentovaní údajov pomáha používanie náhodne generovaných CURP chrániť súkromie jednotlivcov.
-
Testovanie výkonu: Generujte veľké množstvá jedinečných CURP na testovanie výkonu systému pod zaťažením.
-
Školenie a vzdelávanie: Použite generované CURP v vzdelávacích materiáloch o mexických identifikačných systémoch bez použitia reálnych osobných údajov.
História CURP v Mexiku
Systém CURP bol zavedený v roku 1996 mexickou vládou ako súčasť snahy modernizovať a štandardizovať osobnú identifikáciu. Nahradil rôzne iné identifikačné systémy a stal sa kľúčovým prvkom mexickej byrokracie, používaný na všetko od zápisu do školy po podávanie daní.
V priebehu rokov prešiel systém CURP niekoľkými zmenami:
- V roku 2011 bolo zavedené rozlišovacie číslo na rozlíšenie medzi ľuďmi narodenými pred a po roku 2000.
- V roku 2012 bol algoritmus na výpočet kontrolného čísla upravený na zlepšenie jedinečnosti.
Príklady
Tu sú kódové príklady na generovanie náhodných CURP v rôznych programovacích jazykoch:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generujte komponenty mena
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generujte dátum narodenia
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")
# Generujte pohlavie
gender = random.choice(['H', 'M'])
# Generujte štátny kód
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)
# Generujte spoluhlásky
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generujte rozlišovací číslo
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generujte kontrolný číslo (zjednodušené pre tento príklad)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generujte a vytlačte náhodný CURP
print(generate_curp())
Alternatívy v iných krajinách
Hoci je CURP jedinečný pre Mexiko, iné krajiny majú podobné identifikačné systémy:
- Spojené štáty: Číslo sociálneho zabezpečenia (SSN)
- Kanada: Číslo sociálneho poistenia (SIN)
- India: Číslo Aadhaar
- Brazília: Cadastro de Pessoas Físicas (CPF)
Každý systém má svoju vlastnú štruktúru a pravidlá, ale slúžia podobným účelom vo svojich príslušných krajinách.
Odkazy
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Prístup 4. augusta 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. Prístup 4. augusta 2024.