CURP Generator
Introduction
CURP (Clave Única de Registro de Población) yra unikalus alfanumerinis kodas, naudojamas Meksikoje identifikavimo tikslais. Šis įrankis generuoja galiojančius, atsitiktinius CURP kodus testavimo scenarijams, laikantis oficialaus formato ir validacijos taisyklių. Svarbu pažymėti, kad šie sugeneruoti CURP kodai nėra susiję su realiais asmenimis ir turėtų būti naudojami tik testavimo tikslais.
Structure of CURP
CURP sudaro 18 simbolių šiuo formatu:
- Paternal pavardės pirmoji raidė
- Paternal pavardės pirmoji balsė (išskyrus pirmąją raidę)
- Maternal pavardės pirmoji raidė
- Vardų pirmoji raidė 5-10. Gimimo data (YYMMDD formatu)
- Lytis (H vyrams, M moterims) 12-13. Dviejų raidžių kodas, nurodantis gimimo valstiją 14-16. Pirmoji vidinė konsonantas kiekviename vardo komponente (paternal pavardė, maternal pavardė, vardas)
- Diferencijavimo skaitmuo (0-9 žmonėms, gimusiems iki 2000 metų, A-Z tiems, kurie gimė nuo 2000 metų)
- Patikros skaitmuo (0-9)
Algorithm for Generating a Random CURP
- Sugeneruoti atsitiktines raides vardo komponentams
- Sugeneruoti atsitiktinę gimimo datą
- Atsitiktinai pasirinkti lytį
- Atsitiktinai pasirinkti galiojantį valstijos kodą
- Sugeneruoti atsitiktines konsonantas vidiniams vardo komponentams
- Nustatyti diferencijavimo skaitmenį pagal gimimo metus
- Apskaičiuoti patikros skaitmenį
- Sujungti visus komponentus, kad sudarytų CURP
Validation Rules
- Visos raidės turi būti didžiosios
- Gimimo data turi būti galiojanti data (įskaitant keliamųjų metų atsižvelgimą)
- Valstijos kodas turi būti galiojantis Meksikos valstijos kodas
- Diferencijavimo skaitmuo turi atitikti gimimo metus
- Patikros skaitmuo turi būti teisingai apskaičiuotas
- Tvarkyti specialius atvejus dėl vardų (pvz., vienos raidės pavardės, vardai su Ñ)
Use Cases
-
Programinės įrangos testavimas: kūrėjai gali naudoti šį įrankį generuoti galiojančius CURP kodus, kad testuotų vartotojų registracijos sistemas, duomenų bazės operacijas ar bet kurią programinę įrangą, kuri reikalauja CURP įvesties.
-
Duomenų privatumas: demonstruojant programinę įrangą ar pateikiant duomenis, naudojant atsitiktinai sugeneruotus CURP kodus padeda apsaugoti asmenų privatumą.
-
Veiklos testavimas: generuoti didelius unikalių CURP kodų rinkinius, kad būtų galima testuoti sistemos veikimą esant apkrovai.
-
Mokymas ir švietimas: naudoti sugeneruotus CURP kodus švietimo medžiagose apie Meksikos identifikavimo sistemas, nesinaudojant tikrais asmeniniais duomenimis.
History of CURP in Mexico
CURP sistema buvo pristatyta 1996 metais Meksikos vyriausybės kaip dalis pastangų modernizuoti ir standartizuoti asmens identifikavimą. Ji pakeitė įvairias kitas identifikavimo sistemas ir tapo svarbiu elementu Meksikos biurokratijoje, naudojama viskam, pradedant mokyklų registracija ir baigiant mokesčių deklaravimu.
Per metus CURP sistema patyrė keletą pakeitimų:
- 2011 m. buvo įvestas diferencijavimo skaitmuo, skirtas atskirti žmones, gimusius prieš ir po 2000 metų.
- 2012 m. buvo pakeista patikros skaitmens apskaičiavimo algoritmas, siekiant pagerinti unikalumą.
Examples
Štai kodo pavyzdžiai, kaip generuoti atsitiktinius CURP kodus įvairiose programavimo kalbose:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generuoti vardo komponentus
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generuoti gimimo datą
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")
# Generuoti lytį
gender = random.choice(['H', 'M'])
# Generuoti valstijos kodą
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)
# Generuoti konsonantas
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generuoti diferencijavimo skaitmenį
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generuoti patikros skaitmenį (supaprastinta šiam pavyzdžiui)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generuoti ir atspausdinti atsitiktinį CURP
print(generate_curp())
Alternatives in Other Countries
Nors CURP yra unikalus Meksikai, kitos šalys turi panašias identifikavimo sistemas:
- Jungtinės Valstijos: Social Security Number (SSN)
- Kanada: Social Insurance Number (SIN)
- Indija: Aadhaar Number
- Brazilija: Cadastro de Pessoas Físicas (CPF)
Kiekviena sistema turi savo struktūrą ir taisykles, tačiau jos tarnauja panašiems tikslams savo šalyse.
References
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Accessed 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. Accessed 4 Aug. 2024.