Tilfældig CURP-generator til testformål og validering
Generer gyldige, tilfældige CURP'er (Clave Única de Registro de Población) til testformål. Dette værktøj opretter CURP'er, der overholder det officielle mexicanske format og valideringsregler, uden at bruge ægte personlige oplysninger.
Generer CURP
Dokumentation
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:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generer navnekomponenter
7 paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
8 maternal = random.choice(string.ascii_uppercase)
9 given = random.choice(string.ascii_uppercase)
10
11 # Generer fødselsdato
12 start_date = datetime(1940, 1, 1)
13 end_date = datetime.now()
14 random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
15 date_str = random_date.strftime("%y%m%d")
16
17 # Generer køn
18 gender = random.choice(['H', 'M'])
19
20 # Generer statskode
21 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']
22 state = random.choice(states)
23
24 # Generer konsonanter
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generer differentieringsciffer
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generer kontrolciffer (forenklet til dette eksempel)
31 check_digit = random.choice(string.digits)
32
33 return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
34
35## Generer og print en tilfældig CURP
36print(generate_curp())
37
1function generateCURP() {
2 const vowels = 'AEIOU';
3 const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
4 const 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'];
5
6 const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
7 const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
8 const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];
9
10 const paternal = randomLetter() + randomVowel();
11 const maternal = randomLetter();
12 const given = randomLetter();
13
14 const now = new Date();
15 const start = new Date(1940, 0, 1);
16 const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
17 const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');
18
19 const gender = Math.random() < 0.5 ? 'H' : 'M';
20 const state = states[Math.floor(Math.random() * states.length)];
21
22 const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();
23
24 const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ?
25 Math.floor(Math.random() * 10).toString() :
26 String.fromCharCode(65 + Math.floor(Math.random() * 26));
27
28 const checkDigit = Math.floor(Math.random() * 10).toString();
29
30 return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
31}
32
33// Generer og log en tilfældig CURP
34console.log(generateCURP());
35
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.
Feedback
Klik på feedback toasten for at begynde at give feedback om dette værktøj
Relaterede værktøjer
Opdag flere værktøjer, der kan være nyttige for dit workflow