Slumptalsgenerator för CURP:ar för testningsändamål
Generera giltiga, slumpmässiga CURP:ar (Clave Única de Registro de Población) för testningsändamål. Det här verktyget skapar CURP:ar som följer den officiella mexikanska format- och valideringsreglerna, utan att använda verklig personlig information.
Generera CURP
Dokumentation
CURP Generator
Introduktion
CURP (Clave Única de Registro de Población) är en unik alfanumerisk kod som används i Mexiko för identifieringsändamål. Detta verktyg genererar giltiga, slumpmässiga CURP:er för testscenarier, i enlighet med det officiella formatet och valideringsreglerna. Det är viktigt att notera att dessa genererade CURP:er inte är kopplade till verkliga individer och endast ska användas för teständamål.
Struktur av CURP
En CURP består av 18 tecken i följande format:
- Första bokstaven i det paterna efternamnet
- Första vokalen i det paterna efternamnet (exklusive första bokstaven)
- Första bokstaven i det materna efternamnet
- Första bokstaven i det givna namnet 5-10. Födelsedatum (YYMMDD-format)
- Kön (H för man, M för kvinna) 12-13. Tvåbokstavskod för födelsestat 14-16. Första interna konsonant i varje namnkomponent (paterna efternamn, materna efternamn, givet namn)
- Differentieringssiffra (0-9 för personer födda före 2000, A-Z för de som föddes från 2000 och framåt)
- Kontrollsiffra (0-9)
Algoritm för att generera en slumpmässig CURP
- Generera slumpmässiga bokstäver för namnkomponenter
- Generera ett slumpmässigt födelsedatum
- Slumptalsval kön
- Slumptalsval en giltig statskod
- Generera slumpmässiga konsonanter för interna namnkomponenter
- Bestäm differentieringssiffran baserat på födelseåret
- Beräkna kontrollsiffran
- Kombinera alla komponenter för att bilda CURP
Valideringsregler
- Alla alfabetiska tecken måste vara versaler
- Födelsedatumet måste vara ett giltigt datum (inklusive hänsyn till skottår)
- Statskoden måste vara en giltig mexikansk statskod
- Differentieringssiffran måste motsvara födelseåret
- Kontrollsiffran måste vara korrekt beräknad
- Hantera specialfall för namn (t.ex. en-bokstavsefnamn, namn med Ñ)
Användningsområden
-
Programvarutestning: Utvecklare kan använda detta verktyg för att generera giltiga CURP:er för att testa användarregistreringssystem, databasoperationer eller all programvara som kräver CURP-inmatning.
-
Dataskydd: När man demonstrerar programvara eller presenterar data hjälper användningen av slumpmässigt genererade CURP:er att skydda individers integritet.
-
Prestandatestning: Generera stora mängder unika CURP:er för att testa systemets prestanda under belastning.
-
Utbildning och träning: Använd genererade CURP:er i utbildningsmaterial om mexikanska identifieringssystem utan att använda verkliga personuppgifter.
Historia om CURP i Mexiko
CURP-systemet introducerades 1996 av den mexikanska regeringen som en del av en insats för att modernisera och standardisera personlig identifiering. Det ersatte olika andra identifieringssystem och blev ett avgörande element i mexikansk byråkrati, som används för allt från skolregistrering till skatteinlämning.
Under åren har CURP-systemet genomgått flera förändringar:
- År 2011 infördes differentieringssiffran för att särskilja mellan personer födda före och efter 2000.
- År 2012 modifierades algoritmen för att beräkna kontrollsiffran för att förbättra unikheten.
Exempel
Här är kodexempel för att generera slumpmässiga CURP:er i olika programmeringsspråk:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generera namnkomponenter
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 # Generera födelsedatum
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 # Generera kön
18 gender = random.choice(['H', 'M'])
19
20 # Generera statskod
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 # Generera konsonanter
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generera differentieringssiffra
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generera kontrollsiffra (förenklad för detta exempel)
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## Generera och skriv ut en slumpmässig 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// Generera och logga en slumpmässig CURP
34console.log(generateCURP());
35
Alternativ i andra länder
Även om CURP är unikt för Mexiko, har andra länder liknande identifieringssystem:
- USA: Social Security Number (SSN)
- Kanada: Social Insurance Number (SIN)
- Indien: Aadhaar Number
- Brasilien: Cadastro de Pessoas Físicas (CPF)
Varje system har sin egen struktur och regler, men de tjänar liknande syften i sina respektive länder.
Referenser
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Åtkomst 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. Åtkomst 4 aug. 2024.
Återkoppling
Klicka på feedback-toasten för att börja ge feedback om detta verktyg
Relaterade verktyg
Upptäck fler verktyg som kan vara användbara för ditt arbetsflöde