CURP Generator
Introduktion
CURP (Clave Única de Registro de Población) er en unik alfanumerisk kode, der bruges i Mexico til identifikationsformål. Dette værktøj genererer gyldige, tilfældige CURP'er til testscenarier, der overholder det officielle format og valideringsregler. Det er vigtigt at bemærke, at disse genererede CURP'er ikke er knyttet til virkelige personer og kun bør bruges til testformål.
Struktur af CURP
En CURP består af 18 tegn i følgende format:
- Første bogstav i efternavnet (faderens efternavn)
- Første vokal i efternavnet (faderens efternavn, eksklusive første bogstav)
- Første bogstav i moderens efternavn
- Første bogstav i fornavnet 5-10. Fødselsdato (YYMMDD format)
- Køn (H for mand, M for kvinde) 12-13. To-bogstavs kode for fødselsstat 14-16. Første indre konsonant i hver navnekomponent (faderens efternavn, moderens efternavn, fornavn)
- Differentieringsciffer (0-9 for personer født før 2000, A-Z for dem født fra 2000 og frem)
- Kontrolciffer (0-9)
Algoritme til generering af en tilfældig CURP
- Generer tilfældige bogstaver til navnekomponenter
- Generer en tilfældig fødselsdato
- Vælg tilfældigt køn
- Vælg tilfældigt en gyldig statskode
- Generer tilfældige konsonanter til indre navnekomponenter
- Bestem differentieringscifferet baseret på fødselsåret
- Beregn kontrolcifferet
- Kombiner alle komponenter for at danne CURP'en
Valideringsregler
- Alle alfabetiske tegn skal være store bogstaver
- Fødselsdatoen skal være en gyldig dato (inklusive skudår)
- Statskoden skal være en gyldig mexicansk statskode
- Differentieringscifferet skal svare til fødselsåret
- Kontrolcifferet skal være korrekt beregnet
- Håndter specielle tilfælde for navne (f.eks. efternavne med én bogstav, navne med Ñ)
Anvendelsestilfælde
-
Softwaretest: Udviklere kan bruge dette værktøj til at generere gyldige CURP'er til test af brugerregistreringssystemer, databaseoperationer eller enhver software, der kræver CURP-input.
-
Databeskyttelse: Når man demonstrerer software eller præsenterer data, hjælper brugen af tilfældigt genererede CURP'er med at beskytte individers privatliv.
-
Ydelsestest: Generer store sæt af unikke CURP'er for at teste systemets ydeevne under belastning.
-
Uddannelse og træning: Brug genererede CURP'er i undervisningsmaterialer om mexicanske identifikationssystemer uden at bruge virkelige persondata.
Historie om CURP i Mexico
CURP-systemet blev introduceret i 1996 af den mexicanske regering som en del af en indsats for at modernisere og standardisere personlig identifikation. Det erstattede forskellige andre identifikationssystemer og blev et centralt element i mexicansk bureaukrati, der bruges til alt fra skoleindskrivning til skatteindgivelse.
I løbet af årene har CURP-systemet gennemgået flere ændringer:
- I 2011 blev differentieringscifferet introduceret for at skelne mellem personer født før og efter 2000.
- I 2012 blev algoritmen til beregning af kontrolcifferet ændret for at forbedre unikheden.
Eksempler
Her er kodeeksempler til at generere tilfældige CURP'er i forskellige programmeringssprog:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generer navnekomponenter
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generer fødselsdato
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")
# Generer køn
gender = random.choice(['H', 'M'])
# Generer statskode
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)
# Generer konsonanter
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generer differentieringsciffer
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generer kontrolciffer (forenklet til dette eksempel)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generer og print en tilfældig CURP
print(generate_curp())
Alternativer i andre lande
Selvom CURP er unik for Mexico, har andre lande lignende identifikationssystemer:
- USA: Social Security Number (SSN)
- Canada: Social Insurance Number (SIN)
- Indien: Aadhaar Number
- Brasilien: Cadastro de Pessoas Físicas (CPF)
Hvert system har sin egen struktur og regler, men de tjener lignende formål i deres respektive lande.
Referencer
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Adgang 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. Adgang 4. aug. 2024.