Tilfeldig CURP-generator for testing og validering
Generer gyldige, tilfeldige CURP-er (Clave Única de Registro de Población) for testformål. Dette verktøyet lager CURP-er som overholder offisiell meksikansk format og valideringsregler, uten å bruke ekte personlig informasjon.
Generer CURP
Dokumentasjon
CURP Generator
Introduksjon
CURP (Clave Única de Registro de Población) er en unik alfanumerisk kode som brukes i Mexico for identifikasjonsformål. Dette verktøyet genererer gyldige, tilfeldige CURP-er for testscenarier, i samsvar med det offisielle formatet og valideringsreglene. Det er viktig å merke seg at disse genererte CURP-ene ikke er knyttet til virkelige individer og kun skal brukes til testformål.
Struktur av CURP
En CURP består av 18 tegn i følgende format:
- Første bokstav av etternavnet til far
- Første vokal av etternavnet til far (unntatt første bokstav)
- Første bokstav av etternavnet til mor
- Første bokstav av fornavnet 5-10. Fødselsdato (YYMMDD-format)
- Kjønn (H for mann, M for kvinne) 12-13. To-bokstavers kode for fødselsstat 14-16. Første interne konsonant av hver navnekomponent (paternal etternavn, maternal etternavn, fornavn)
- Differensieringsdigit (0-9 for personer født før 2000, A-Z for de som er født fra 2000 og utover)
- Sjekkdigit (0-9)
Algoritme for å generere en tilfeldig CURP
- Generer tilfeldige bokstaver for navnekomponenter
- Generer en tilfeldig fødselsdato
- Velg tilfeldig kjønn
- Velg tilfeldig en gyldig statskode
- Generer tilfeldige konsonanter for interne navnekomponenter
- Bestem differensieringsdigit basert på fødselsåret
- Beregn sjekkdigit
- Kombiner alle komponentene for å danne CURP-en
Valideringsregler
- Alle alfabetiske tegn må være store bokstaver
- Fødselsdatoen må være en gyldig dato (inkludert skuddårsconsiderasjoner)
- Statskoden må være en gyldig mexicansk statskode
- Differensieringsdigit må samsvare med fødselsåret
- Sjekkdigit må være korrekt beregnet
- Håndter spesielle tilfeller for navn (f.eks. ett-bokstavers etternavn, navn med Ñ)
Bruksområder
-
Programvaretesting: Utviklere kan bruke dette verktøyet til å generere gyldige CURP-er for testing av brukerregistreringssystemer, databaseoperasjoner eller programvare som krever CURP-inndata.
-
Dataprivacy: Når man demonstrerer programvare eller presenterer data, hjelper det å bruke tilfeldig genererte CURP-er for å beskytte enkeltpersoners personvern.
-
Ytelsestesting: Generer store sett med unike CURP-er for å teste systemytelse under belastning.
-
Opplæring og utdanning: Bruk genererte CURP-er i utdanningsmateriell om mexicanske identifikasjonssystemer uten å bruke ekte personopplysninger.
Historie om CURP i Mexico
CURP-systemet ble introdusert i 1996 av den meksikanske regjeringen som en del av et forsøk på å modernisere og standardisere personlig identifikasjon. Det erstattet ulike andre identifikasjonssystemer og ble et viktig element i meksikansk byråkrati, brukt til alt fra skoleinnmelding til skatteinnlevering.
I løpet av årene har CURP-systemet gjennomgått flere modifikasjoner:
- I 2011 ble differensieringsdigit introdusert for å skille mellom personer født før og etter 2000.
- I 2012 ble algoritmen for beregning av sjekkdigit endret for å forbedre unikhet.
Eksempler
Her er kodeeksempler for å generere tilfeldige CURP-er i forskjellige programmeringsspråk:
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 kjønn
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 differensieringsdigit
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generer sjekkdigit (forenklet for dette eksemplet)
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 skriv ut en tilfeldig 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 logg en tilfeldig CURP
34console.log(generateCURP());
35
Alternativer i andre land
Mens CURP er unikt for Mexico, har andre land lignende identifikasjonssystemer:
- USA: Social Security Number (SSN)
- Canada: Social Insurance Number (SIN)
- India: Aadhaar Number
- Brasil: Cadastro de Pessoas Físicas (CPF)
Hvert system har sin egen struktur og regler, men de tjener lignende formål i sine respektive land.
Referanser
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Tilgang 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. Tilgang 4. aug. 2024.
Tilbakemelding
Klikk på tilbakemeldings-toasten for å begynne å gi tilbakemelding om dette verktøyet
Relaterte verktøy
Oppdag flere verktøy som kan være nyttige for arbeidsflyten din