Generatore di CURP Casuale per Scopi di Test e Validazione
Genera CURP validi e casuali (Clave Única de Registro de Población) per scopi di test. Questo strumento crea CURP che rispettano il formato ufficiale messicano e le regole di validazione, senza utilizzare informazioni personali reali.
Genera CURP
Documentazione
Generatore CURP
Introduzione
Il CURP (Clave Única de Registro de Población) è un codice alfanumerico unico utilizzato in Messico per scopi identificativi. Questo strumento genera CURP validi e casuali per scenari di test, rispettando il formato ufficiale e le regole di validazione. È importante notare che questi CURP generati non sono legati a persone reali e devono essere utilizzati solo per scopi di test.
Struttura del CURP
Un CURP è composto da 18 caratteri nel seguente formato:
- Prima lettera del cognome paterno
- Prima vocale del cognome paterno (escludendo la prima lettera)
- Prima lettera del cognome materno
- Prima lettera del nome 5-10. Data di nascita (formato YYMMDD)
- Genere (H per maschio, M per femmina) 12-13. Codice di due lettere per lo stato di nascita 14-16. Prima consonante interna di ciascun componente del nome (cognome paterno, cognome materno, nome)
- Cifra di differenziazione (0-9 per le persone nate prima del 2000, A-Z per quelle nate dal 2000 in poi)
- Cifra di controllo (0-9)
Algoritmo per Generare un CURP Casuale
- Generare lettere casuali per i componenti del nome
- Generare una data di nascita casuale
- Selezionare casualmente il genere
- Selezionare casualmente un codice di stato valido
- Generare consonanti casuali per i componenti interni del nome
- Determinare la cifra di differenziazione in base all'anno di nascita
- Calcolare la cifra di controllo
- Combinare tutti i componenti per formare il CURP
Regole di Validazione
- Tutti i caratteri alfabetici devono essere in maiuscolo
- La data di nascita deve essere una data valida (inclusa la considerazione degli anni bisestili)
- Il codice di stato deve essere un codice di stato messicano valido
- La cifra di differenziazione deve corrispondere all'anno di nascita
- La cifra di controllo deve essere calcolata correttamente
- Gestire casi speciali per i nomi (ad esempio, cognomi a lettera singola, nomi con Ñ)
Casi d'Uso
-
Test del Software: Gli sviluppatori possono utilizzare questo strumento per generare CURP validi per testare sistemi di registrazione utenti, operazioni su database o qualsiasi software che richieda input CURP.
-
Privacy dei Dati: Quando si dimostra software o si presenta dati, utilizzare CURP generati casualmente aiuta a proteggere la privacy degli individui.
-
Test delle Prestazioni: Generare grandi set di CURP unici per testare le prestazioni del sistema sotto carico.
-
Formazione e Educazione: Utilizzare CURP generati nei materiali educativi sui sistemi di identificazione messicani senza utilizzare dati personali reali.
Storia del CURP in Messico
Il sistema CURP è stato introdotto nel 1996 dal governo messicano come parte di uno sforzo per modernizzare e standardizzare l'identificazione personale. Ha sostituito vari altri sistemi di identificazione ed è diventato un elemento cruciale nella burocrazia messicana, utilizzato per tutto, dall'iscrizione scolastica alla dichiarazione dei redditi.
Negli anni, il sistema CURP ha subito diverse modifiche:
- Nel 2011, è stata introdotta la cifra di differenziazione per distinguere tra le persone nate prima e dopo il 2000.
- Nel 2012, l'algoritmo per calcolare la cifra di controllo è stato modificato per migliorare l'unicità.
Esempi
Ecco esempi di codice per generare CURP casuali in vari linguaggi di programmazione:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Genera componenti del nome
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 # Genera data di nascita
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 # Genera genere
18 gender = random.choice(['H', 'M'])
19
20 # Genera codice di stato
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 # Genera consonanti
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Genera cifra di differenziazione
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Genera cifra di controllo (semplificata per questo esempio)
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## Genera e stampa un CURP casuale
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// Genera e registra un CURP casuale
34console.log(generateCURP());
35
Alternative in Altri Paesi
Sebbene il CURP sia unico per il Messico, altri paesi hanno sistemi di identificazione simili:
- Stati Uniti: Numero di Sicurezza Sociale (SSN)
- Canada: Numero di Assicurazione Sociale (SIN)
- India: Numero Aadhaar
- Brasile: Cadastro de Pessoas Físicas (CPF)
Ogni sistema ha la propria struttura e regole, ma svolgono funzioni simili nei rispettivi paesi.
Riferimenti
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Governo del Messico, https://www.gob.mx/curp/. Accesso 4 Ago. 2024.
- RENAPO (Registro Nacional de Población e Identidad). "Instructivo Normativo per l'Assegnazione della Clave Única de Registro de Población." Governo del Messico, https://www.gob.mx/cms/uploads/attachment/file/79053/InstructivoNormativoCURP.pdf. Accesso 4 Ago. 2024.
Feedback
Fare clic sul feedback toast per iniziare a fornire feedback su questo strumento
Strumenti correlati
Scopri più strumenti che potrebbero essere utili per il tuo flusso di lavoro