Generátor CURP
Úvod
CURP (Clave Única de Registro de Población) je jedinečný alfanumerický kód používaný v Mexiku pro identifikační účely. Tento nástroj generuje platné, náhodné CURPy pro testovací scénáře, které splňují oficiální formát a pravidla validace. Je důležité poznamenat, že tyto generované CURPy nejsou spojeny s reálnými osobami a měly by být používány pouze pro testovací účely.
Struktura CURP
CURP se skládá z 18 znaků v následujícím formátu:
- První písmeno příjmení otce
- První samohláska příjmení otce (s výjimkou prvního písmene)
- První písmeno příjmení matky
- První písmeno křestního jména 5-10. Datum narození (ve formátu YYMMDD)
- Pohlaví (H pro muže, M pro ženy) 12-13. Dvoupísmenný kód pro stát narození 14-16. První vnitřní souhláska každé komponenty jména (příjmení otce, příjmení matky, křestní jméno)
- Diferenciální číslice (0-9 pro osoby narozené před rokem 2000, A-Z pro ty, kteří se narodili od roku 2000)
- Kontrolní číslice (0-9)
Algoritmus pro generování náhodného CURP
- Generujte náhodná písmena pro komponenty jména
- Generujte náhodné datum narození
- Náhodně vyberte pohlaví
- Náhodně vyberte platný kód státu
- Generujte náhodné souhlásky pro vnitřní komponenty jména
- Určete diferenciální číslici na základě roku narození
- Vypočítejte kontrolní číslici
- Kombinujte všechny komponenty do formátu CURP
Pravidla validace
- Všechny abecední znaky musí být velkými písmeny
- Datum narození musí být platné (včetně zohlednění přestupného roku)
- Kód státu musí být platný mexický kód státu
- Diferenciální číslice musí odpovídat roku narození
- Kontrolní číslice musí být správně vypočítána
- Zpracovávejte zvláštní případy pro jména (např. jednopísmenná příjmení, jména s Ñ)
Případy použití
-
Testování softwaru: Vývojáři mohou tento nástroj použít k generování platných CURP pro testování systémů registrace uživatelů, databázových operací nebo jakéhokoli softwaru, který vyžaduje vstup CURP.
-
Ochrana soukromí: Při demonstraci softwaru nebo prezentaci dat pomáhá použití náhodně generovaných CURP chránit soukromí jednotlivců.
-
Testování výkonu: Generujte velké sady unikátních CURP pro testování výkonu systému pod zatížením.
-
Školení a vzdělávání: Používejte generované CURP v vzdělávacích materiálech o mexických identifikačních systémech, aniž byste používali skutečná osobní data.
Historie CURP v Mexiku
Systém CURP byl zaveden v roce 1996 mexickou vládou jako součást snahy modernizovat a standardizovat osobní identifikaci. Nahradil různé jiné identifikační systémy a stal se klíčovým prvkem v mexické byrokracii, používaným pro vše od zápisu do školy po podávání daní.
V průběhu let došlo k několika úpravám systému CURP:
- V roce 2011 byla zavedena diferenciální číslice, aby se odlišily osoby narozené před a po roce 2000.
- V roce 2012 byl algoritmus pro výpočet kontrolní číslice upraven, aby se zlepšila jedinečnost.
Příklady
Zde jsou příklady kódu pro generování náhodných CURP v různých programovacích jazycích:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generujte komponenty jména
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generujte datum narození
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 pohlaví
gender = random.choice(['H', 'M'])
# Generujte kód státu
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 souhlásky
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generujte diferenciální číslici
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generujte kontrolní číslici (zjednodušené pro tento příklad)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generujte a vytiskněte náhodný CURP
print(generate_curp())
Alternativy v jiných zemích
Zatímco CURP je jedinečný pro Mexiko, jiné země mají podobné identifikační systémy:
- Spojené státy: Číslo sociálního zabezpečení (SSN)
- Kanada: Číslo sociálního pojištění (SIN)
- Indie: Číslo Aadhaar
- Brazílie: Cadastro de Pessoas Físicas (CPF)
Každý systém má svou vlastní strukturu a pravidla, ale slouží podobným účelům ve svých příslušných zemích.
Odkazy
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Přístup 4. srpna 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. Přístup 4. srpna 2024.