Náhodný generátor CURP pro testování a validaci dat
Generujte platné, náhodné CURPy (Clave Única de Registro de Población) pro testovací účely. Tento nástroj vytváří CURPy, které vyhovují oficiálnímu mexickému formátu a validačním pravidlům, aniž by používal skutečné osobní informace.
Generovat CURP
Dokumentace
Generátor CURP
Úvod
CURP (Clave Única de Registro de Población) je jedinečný alfanumerický kód používaný v Mexiku pro identifikační účely. Tento nástroj generuje platné, náhodné CURPy pro testovací scénáře, které splňují oficiální formát a pravidla validace. Je důležité poznamenat, že tyto generované CURPy nejsou spojeny s reálnými osobami a měly by být používány pouze pro testovací účely.
Struktura CURP
CURP se skládá z 18 znaků v následujícím formátu:
- První písmeno příjmení otce
- První samohláska příjmení otce (s výjimkou prvního písmene)
- První písmeno příjmení matky
- První písmeno křestního jména 5-10. Datum narození (ve formátu YYMMDD)
- Pohlaví (H pro muže, M pro ženy) 12-13. Dvoupísmenný kód pro stát narození 14-16. První vnitřní souhláska každé komponenty jména (příjmení otce, příjmení matky, křestní jméno)
- Diferenciální číslice (0-9 pro osoby narozené před rokem 2000, A-Z pro ty, kteří se narodili od roku 2000)
- Kontrolní číslice (0-9)
Algoritmus pro generování náhodného CURP
- Generujte náhodná písmena pro komponenty jména
- Generujte náhodné datum narození
- Náhodně vyberte pohlaví
- Náhodně vyberte platný kód státu
- Generujte náhodné souhlásky pro vnitřní komponenty jména
- Určete diferenciální číslici na základě roku narození
- Vypočítejte kontrolní číslici
- Kombinujte všechny komponenty do formátu CURP
Pravidla validace
- Všechny abecední znaky musí být velkými písmeny
- Datum narození musí být platné (včetně zohlednění přestupného roku)
- Kód státu musí být platný mexický kód státu
- Diferenciální číslice musí odpovídat roku narození
- Kontrolní číslice musí být správně vypočítána
- Zpracovávejte zvláštní případy pro jména (např. jednopísmenná příjmení, jména s Ñ)
Případy použití
-
Testování softwaru: Vývojáři mohou tento nástroj použít k generování platných CURP pro testování systémů registrace uživatelů, databázových operací nebo jakéhokoli softwaru, který vyžaduje vstup CURP.
-
Ochrana soukromí: Při demonstraci softwaru nebo prezentaci dat pomáhá použití náhodně generovaných CURP chránit soukromí jednotlivců.
-
Testování výkonu: Generujte velké sady unikátních CURP pro testování výkonu systému pod zatížením.
-
Školení a vzdělávání: Používejte generované CURP v vzdělávacích materiálech o mexických identifikačních systémech, aniž byste používali skutečná osobní data.
Historie CURP v Mexiku
Systém CURP byl zaveden v roce 1996 mexickou vládou jako součást snahy modernizovat a standardizovat osobní identifikaci. Nahradil různé jiné identifikační systémy a stal se klíčovým prvkem v mexické byrokracii, používaným pro vše od zápisu do školy po podávání daní.
V průběhu let došlo k několika úpravám systému CURP:
- V roce 2011 byla zavedena diferenciální číslice, aby se odlišily osoby narozené před a po roce 2000.
- V roce 2012 byl algoritmus pro výpočet kontrolní číslice upraven, aby se zlepšila jedinečnost.
Příklady
Zde jsou příklady kódu pro generování náhodných CURP v různých programovacích jazycích:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generujte komponenty jména
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 # Generujte datum narození
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 # Generujte pohlaví
18 gender = random.choice(['H', 'M'])
19
20 # Generujte kód státu
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 # Generujte souhlásky
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generujte diferenciální číslici
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generujte kontrolní číslici (zjednodušené pro tento příklad)
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## Generujte a vytiskněte náhodný 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// Generujte a vytiskněte náhodný CURP
34console.log(generateCURP());
35
Alternativy v jiných zemích
Zatímco CURP je jedinečný pro Mexiko, jiné země mají podobné identifikační systémy:
- Spojené státy: Číslo sociálního zabezpečení (SSN)
- Kanada: Číslo sociálního pojištění (SIN)
- Indie: Číslo Aadhaar
- Brazílie: Cadastro de Pessoas Físicas (CPF)
Každý systém má svou vlastní strukturu a pravidla, ale slouží podobným účelům ve svých příslušných zemích.
Odkazy
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Přístup 4. srpna 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. Přístup 4. srpna 2024.
Zpětná vazba
Klikněte na toast se zpětnou vazbou a začněte dávat zpětnou vazbu o tomto nástroji
Související nástroje
Objevte další nástroje, které by mohly být užitečné pro váš pracovní postup