CURP Generator
Introductie
De CURP (Clave Única de Registro de Población) is een unieke alfanumerieke code die in Mexico wordt gebruikt voor identificatiedoeleinden. Deze tool genereert geldige, willekeurige CURP's voor testscenario's, in overeenstemming met het officiële formaat en de validatieregels. Het is belangrijk op te merken dat deze gegenereerde CURP's niet zijn gekoppeld aan echte personen en alleen voor testdoeleinden mogen worden gebruikt.
Structuur van CURP
Een CURP bestaat uit 18 tekens in het volgende formaat:
- Eerste letter van de achternaam van de vader
- Eerste klinker van de achternaam van de vader (exclusief de eerste letter)
- Eerste letter van de achternaam van de moeder
- Eerste letter van de voornaam 5-10. Geboortedatum (YYMMDD-formaat)
- Geslacht (H voor man, M voor vrouw) 12-13. Tweelettercode voor de staat van geboorte 14-16. Eerste interne medeklinker van elk naamcomponent (achternaam vader, achternaam moeder, voornaam)
- Differentiatiecijfer (0-9 voor mensen geboren vóór 2000, A-Z voor degenen die vanaf 2000 zijn geboren)
- Controlecijfer (0-9)
Algoritme voor het genereren van een willekeurige CURP
- Genereer willekeurige letters voor naamcomponenten
- Genereer een willekeurige geboortedatum
- Kies willekeurig geslacht
- Kies willekeurig een geldige staatcode
- Genereer willekeurige medeklinkers voor interne naamcomponenten
- Bepaal het differentiatiecijfer op basis van het geboortejaar
- Bereken het controlecijfer
- Combineer alle componenten om de CURP te vormen
Validatieregels
- Alle alfabetische tekens moeten hoofdletters zijn
- De geboortedatum moet een geldige datum zijn (inclusief rekening houden met schrikkeljaren)
- De staatcode moet een geldige Mexicaanse staatcode zijn
- Het differentiatiecijfer moet overeenkomen met het geboortejaar
- Het controlecijfer moet correct worden berekend
- Behandel speciale gevallen voor namen (bijv. achternamen met één letter, namen met Ñ)
Toepassingsgevallen
-
Softwaretesten: Ontwikkelaars kunnen deze tool gebruiken om geldige CURP's te genereren voor het testen van gebruikersregistratiesystemen, databasebewerkingen of elke software die CURP-invoer vereist.
-
Gegevensprivacy: Bij het demonstreren van software of het presenteren van gegevens helpt het gebruik van willekeurig gegenereerde CURP's om de privacy van individuen te beschermen.
-
Prestatie testen: Genereer grote sets unieke CURP's om de systeemprestaties onder belasting te testen.
-
Opleiding en Educatie: Gebruik gegenereerde CURP's in educatieve materialen over Mexicaanse identificatiesystemen zonder echte persoonlijke gegevens te gebruiken.
Geschiedenis van CURP in Mexico
Het CURP-systeem werd in 1996 door de Mexicaanse overheid geïntroduceerd als onderdeel van een inspanning om persoonlijke identificatie te moderniseren en te standaardiseren. Het verving verschillende andere identificatiesystemen en werd een cruciaal element in de Mexicaanse bureaucratie, gebruikt voor alles van schoolinschrijving tot belastingaangifte.
In de loop der jaren heeft het CURP-systeem verschillende wijzigingen ondergaan:
- In 2011 werd het differentiatiecijfer geïntroduceerd om onderscheid te maken tussen mensen die vóór en na 2000 zijn geboren.
- In 2012 werd het algoritme voor het berekenen van het controlecijfer gewijzigd om de uniciteit te verbeteren.
Voorbeelden
Hier zijn codevoorbeelden om willekeurige CURP's te genereren in verschillende programmeertalen:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Genereer naamcomponenten
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Genereer geboortedatum
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")
# Genereer geslacht
gender = random.choice(['H', 'M'])
# Genereer staatcode
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)
# Genereer medeklinkers
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Genereer differentiatiecijfer
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Genereer controlecijfer (vereenvoudigd voor dit voorbeeld)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Genereer en print een willekeurige CURP
print(generate_curp())
Alternatieven in andere landen
Hoewel de CURP uniek is voor Mexico, hebben andere landen vergelijkbare identificatiesystemen:
- Verenigde Staten: Social Security Number (SSN)
- Canada: Social Insurance Number (SIN)
- India: Aadhaar Nummer
- Brazilië: Cadastro de Pessoas Físicas (CPF)
Elk systeem heeft zijn eigen structuur en regels, maar ze dienen soortgelijke doeleinden in hun respectieve landen.
Referenties
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Geraadpleegd op 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. Geraadpleegd op 4 aug. 2024.