Losowy generator CURP do celów testowych i walidacji
Generuj ważne, losowe CURP (Clave Única de Registro de Población) do celów testowych. To narzędzie tworzy CURP, które spełniają oficjalny meksykański format i zasady walidacji, bez użycia prawdziwych informacji osobowych.
Generuj CURP
Dokumentacja
Generator CURP
Wprowadzenie
CURP (Clave Única de Registro de Población) to unikalny alfanumeryczny kod używany w Meksyku do celów identyfikacyjnych. To narzędzie generuje ważne, losowe CURP do scenariuszy testowych, zgodnie z oficjalnym formatem i zasadami walidacji. Ważne jest, aby zauważyć, że te wygenerowane CURP nie są powiązane z rzeczywistymi osobami i powinny być używane tylko do celów testowych.
Struktura CURP
CURP składa się z 18 znaków w następującym formacie:
- Pierwsza litera nazwiska ojca
- Pierwsza samogłoska nazwiska ojca (z wyłączeniem pierwszej litery)
- Pierwsza litera nazwiska matki
- Pierwsza litera imienia 5-10. Data urodzenia (format YYMMDD)
- Płeć (H dla mężczyzn, M dla kobiet) 12-13. Dwuliterowy kod stanu urodzenia 14-16. Pierwsza wewnętrzna spółgłoska każdego składnika imienia (nazwisko ojca, nazwisko matki, imię)
- Cyfra różnicująca (0-9 dla osób urodzonych przed 2000 rokiem, A-Z dla tych urodzonych od 2000 roku)
- Cyfra kontrolna (0-9)
Algorytm generowania losowego CURP
- Generowanie losowych liter dla składników imienia
- Generowanie losowej daty urodzenia
- Losowy wybór płci
- Losowy wybór ważnego kodu stanu
- Generowanie losowych spółgłosk dla wewnętrznych składników imienia
- Określenie cyfry różnicującej na podstawie roku urodzenia
- Obliczenie cyfry kontrolnej
- Połączenie wszystkich składników w celu utworzenia CURP
Zasady walidacji
- Wszystkie znaki alfabetyczne muszą być wielkimi literami
- Data urodzenia musi być ważną datą (w tym uwzględnienie lat przestępnych)
- Kod stanu musi być ważnym kodem stanu w Meksyku
- Cyfra różnicująca musi odpowiadać rokowi urodzenia
- Cyfra kontrolna musi być poprawnie obliczona
- Obsługa przypadków szczególnych dla imion (np. nazwiska jedno-literowe, imiona z Ñ)
Przykłady użycia
-
Testowanie oprogramowania: Programiści mogą używać tego narzędzia do generowania ważnych CURP do testowania systemów rejestracji użytkowników, operacji w bazach danych lub jakiegokolwiek oprogramowania, które wymaga wprowadzenia CURP.
-
Prywatność danych: Podczas demonstrowania oprogramowania lub prezentowania danych, używanie losowo generowanych CURP pomaga chronić prywatność osób.
-
Testowanie wydajności: Generowanie dużych zestawów unikalnych CURP w celu testowania wydajności systemu pod obciążeniem.
-
Szkolenie i edukacja: Używanie generowanych CURP w materiałach edukacyjnych dotyczących systemów identyfikacji w Meksyku bez używania rzeczywistych danych osobowych.
Historia CURP w Meksyku
System CURP został wprowadzony w 1996 roku przez rząd Meksyku w ramach wysiłków na rzecz modernizacji i standaryzacji identyfikacji osobistej. Zastąpił różne inne systemy identyfikacji i stał się kluczowym elementem meksykańskiej biurokracji, używanym do wszystkiego, od rejestracji w szkołach po składanie zeznań podatkowych.
Na przestrzeni lat system CURP przeszedł kilka modyfikacji:
- W 2011 roku wprowadzono cyfrę różnicującą, aby odróżnić osoby urodzone przed i po 2000 roku.
- W 2012 roku zmodyfikowano algorytm obliczania cyfry kontrolnej, aby poprawić unikalność.
Przykłady
Oto przykłady kodu do generowania losowych CURP w różnych językach programowania:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generowanie składników imienia
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 # Generowanie daty urodzenia
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 # Generowanie płci
18 gender = random.choice(['H', 'M'])
19
20 # Generowanie kodu stanu
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 # Generowanie spółgłosk
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generowanie cyfry różnicującej
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generowanie cyfry kontrolnej (uproszczone dla tego przykładu)
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## Generowanie i drukowanie losowego 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// Generowanie i logowanie losowego CURP
34console.log(generateCURP());
35
Alternatywy w innych krajach
Chociaż CURP jest unikalne dla Meksyku, inne kraje mają podobne systemy identyfikacyjne:
- Stany Zjednoczone: Numer ubezpieczenia społecznego (SSN)
- Kanada: Numer ubezpieczenia społecznego (SIN)
- Indie: Numer Aadhaar
- Brazylia: Cadastro de Pessoas Físicas (CPF)
Każdy system ma swoją własną strukturę i zasady, ale pełni podobne funkcje w swoich krajach.
Źródła
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Dostęp 4 sierpnia 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. Dostęp 4 sierpnia 2024.
Opinie
Kliknij komunikat informujący, aby rozpocząć udzielanie opinii na temat tego narzędzia
Powiązane narzędzia
Odkryj więcej narzędzi, które mogą być przydatne dla Twojego przepływu pracy