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:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generowanie składników imienia
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generowanie daty urodzenia
start_date = datetime(1940, 1, 1)
end_date = datetime.now()
random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
date_str = random_date.strftime("%y%m%d")
# Generowanie płci
gender = random.choice(['H', 'M'])
# Generowanie kodu stanu
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']
state = random.choice(states)
# Generowanie spółgłosk
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generowanie cyfry różnicującej
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generowanie cyfry kontrolnej (uproszczone dla tego przykładu)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generowanie i drukowanie losowego CURP
print(generate_curp())
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.