Generátor CURP
Uvod
CURP (Clave Única de Registro de Población) je edinstvena alfanumerična koda, ki se uporablja v Mehiki za identifikacijske namene. Ta orodje generira veljavne, naključne CURP-e za testne scenarije, ki ustrezajo uradnemu formatu in pravilom validacije. Pomembno je omeniti, da ti generirani CURP-i niso povezani z resničnimi posamezniki in jih je mogoče uporabljati samo za testne namene.
Struktura CURP
CURP se sestavlja iz 18 znakov v naslednjem formatu:
- Prvo črko očetovega priimka
- Prvo samoglasnik očetovega priimka (brez prve črke)
- Prvo črko materinega priimka
- Prvo črko imena 5-10. Datum rojstva (format YYMMDD)
- Spol (H za moške, M za ženske) 12-13. Dvotčkovna koda za zvezno državo rojstva 14-16. Prva notranja soglasnika vsakega dela imena (očetov priimek, materin priimek, ime)
- Diferencirna cifra (0-9 za ljudi, rojene pred letom 2000, A-Z za tiste, rojene od leta 2000 naprej)
- Kontrolna cifra (0-9)
Algoritem za generiranje naključnega CURP
- Generirajte naključne črke za sestavne dele imena
- Generirajte naključni datum rojstva
- Naključno izberite spol
- Naključno izberite veljavno kodo zvezne države
- Generirajte naključne soglasnike za notranje sestavne dele imena
- Določite diferencirno cifro na podlagi leta rojstva
- Izračunajte kontrolno cifro
- Združite vse sestavne dele, da oblikujete CURP
Pravila validacije
- Vse abecedne znake je treba pisati z velikimi črkami
- Datum rojstva mora biti veljaven datum (vključno z upoštevanjem prestopnega leta)
- Koda zvezne države mora biti veljavna koda mehiške zvezne države
- Diferencirna cifra mora ustrezati letu rojstva
- Kontrolna cifra mora biti pravilno izračunana
- Obvladovanje posebnih primerov za imena (npr. enopostavne priimke, imena z Ñ)
Uporabniški primeri
-
Testiranje programske opreme: Razvijalci lahko to orodje uporabijo za generiranje veljavnih CURP-ov za testiranje sistemov za registracijo uporabnikov, operacij z bazami podatkov ali katere koli programske opreme, ki zahteva vnos CURP.
-
Zasebnost podatkov: Pri predstavitvi programske opreme ali podatkov uporaba naključno generiranih CURP-ov pomaga zaščititi zasebnost posameznikov.
-
Testiranje zmogljivosti: Generirajte velike nize edinstvenih CURP-ov za testiranje zmogljivosti sistema pod obremenitvijo.
-
Usposabljanje in izobraževanje: Uporabite generirane CURP-e v izobraževalnih materialih o mehiških identifikacijskih sistemih, ne da bi uporabili resničnih osebnih podatkov.
Zgodovina CURP v Mehiki
Sistem CURP je bil uveden leta 1996 s strani mehiške vlade kot del prizadevanj za modernizacijo in standardizacijo osebne identifikacije. Zamenjal je različne druge identifikacijske sisteme in postal ključni element mehiške birokracije, ki se uporablja za vse, od vpisa v šolo do davčnega poročanja.
Skozi leta je sistem CURP doživel več sprememb:
- Leta 2011 je bila uvedena diferencirna cifra, da bi ločili med ljudmi, rojenimi pred in po letu 2000.
- Leta 2012 je bil algoritem za izračun kontrolne cifre spremenjen, da bi izboljšali edinstvenost.
Primeri
Tukaj so primeri kode za generiranje naključnih CURP-ov v različnih programskih jezikih:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generirajte sestavne dele imena
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generirajte datum rojstva
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")
# Generirajte spol
gender = random.choice(['H', 'M'])
# Generirajte kodo zvezne države
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)
# Generirajte soglasnike
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generirajte diferencirno cifro
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generirajte kontrolno cifro (poenostavljeno za ta primer)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generirajte in natisnite naključni CURP
print(generate_curp())
Alternativen v drugih državah
Medtem ko je CURP edinstven za Mehiko, imajo druge države podobne identifikacijske sisteme:
- Združene države: Številka socialne varnosti (SSN)
- Kanada: Številka socialne pomoči (SIN)
- Indija: Številka Aadhaar
- Brazilija: Cadastro de Pessoas Físicas (CPF)
Vsak sistem ima svojo strukturo in pravila, vendar služi podobnim namenom v svojih državah.
Reference
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Dostopno 4. avg. 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. Dostopno 4. avg. 2024.