Whiz Tools

Generátor CURP

Úvod

CURP (Clave Única de Registro de Población) je jedinečný alfanumerický kód používaný v Mexiku na identifikačné účely. Tento nástroj generuje platné, náhodné CURP pre testovacie scenáre, ktoré spĺňajú oficiálny formát a validačné pravidlá. Je dôležité poznamenať, že tieto generované CURP nie sú spojené s reálnymi osobami a mali by sa používať iba na testovacie účely.

Štruktúra CURP

CURP sa skladá z 18 znakov v nasledujúcom formáte:

  1. Prvá písmeno priezviska otca
  2. Prvá samohláska priezviska otca (s výnimkou prvého písmena)
  3. Prvá písmeno priezviska matky
  4. Prvá písmeno krstného mena 5-10. Dátum narodenia (formát YYMMDD)
  5. Pohlavie (H pre mužov, M pre ženy) 12-13. Dvojpísmenový kód pre štát narodenia 14-16. Prvá vnútorná spoluhláska každého komponentu mena (priezvisko otca, priezvisko matky, krstné meno)
  6. Rozlišovací číslo (0-9 pre osoby narodené pred rokom 2000, A-Z pre tých, ktorí sa narodili od roku 2000)
  7. Kontrolný číslo (0-9)

Algoritmus na generovanie náhodného CURP

  1. Generujte náhodné písmená pre komponenty mena
  2. Generujte náhodný dátum narodenia
  3. Náhodne vyberte pohlavie
  4. Náhodne vyberte platný štátny kód
  5. Generujte náhodné spoluhlásky pre vnútorné komponenty mena
  6. Určte rozlišovací číslo na základe roku narodenia
  7. Vypočítajte kontrolný číslo
  8. Kombinujte všetky komponenty na vytvorenie CURP

Pravidlá validácie

  • Všetky abecedné znaky musia byť veľké písmená
  • Dátum narodenia musí byť platný dátum (vrátane zohľadnenia prestupných rokov)
  • Štátny kód musí byť platný mexický štátny kód
  • Rozlišovací číslo musí zodpovedať roku narodenia
  • Kontrolný číslo musí byť správne vypočítané
  • Riešte špeciálne prípady pre mená (napr. jednolitterové priezviská, mená s Ñ)

Prípady použitia

  1. Testovanie softvéru: Vývojári môžu tento nástroj použiť na generovanie platných CURP pre testovanie systémov registrácie používateľov, databázových operácií alebo akéhokoľvek softvéru, ktorý vyžaduje vstup CURP.

  2. Ochrana údajov: Pri demonštrácii softvéru alebo prezentovaní údajov pomáha používanie náhodne generovaných CURP chrániť súkromie jednotlivcov.

  3. Testovanie výkonu: Generujte veľké množstvá jedinečných CURP na testovanie výkonu systému pod zaťažením.

  4. Školenie a vzdelávanie: Použite generované CURP v vzdelávacích materiáloch o mexických identifikačných systémoch bez použitia reálnych osobných údajov.

História CURP v Mexiku

Systém CURP bol zavedený v roku 1996 mexickou vládou ako súčasť snahy modernizovať a štandardizovať osobnú identifikáciu. Nahradil rôzne iné identifikačné systémy a stal sa kľúčovým prvkom mexickej byrokracie, používaný na všetko od zápisu do školy po podávanie daní.

V priebehu rokov prešiel systém CURP niekoľkými zmenami:

  • V roku 2011 bolo zavedené rozlišovacie číslo na rozlíšenie medzi ľuďmi narodenými pred a po roku 2000.
  • V roku 2012 bol algoritmus na výpočet kontrolného čísla upravený na zlepšenie jedinečnosti.

Príklady

Tu sú kódové príklady na generovanie náhodných CURP v rôznych programovacích jazykoch:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # Generujte komponenty mena
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # Generujte dátum narodenia
    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")

    # Generujte pohlavie
    gender = random.choice(['H', 'M'])

    # Generujte štátny kód
    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)

    # Generujte spoluhlásky
    consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))

    # Generujte rozlišovací číslo
    diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)

    # Generujte kontrolný číslo (zjednodušené pre tento príklad)
    check_digit = random.choice(string.digits)

    return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"

## Generujte a vytlačte náhodný CURP
print(generate_curp())
function generateCURP() {
    const vowels = 'AEIOU';
    const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
    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'];

    const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
    const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
    const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];

    const paternal = randomLetter() + randomVowel();
    const maternal = randomLetter();
    const given = randomLetter();

    const now = new Date();
    const start = new Date(1940, 0, 1);
    const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
    const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');

    const gender = Math.random() < 0.5 ? 'H' : 'M';
    const state = states[Math.floor(Math.random() * states.length)];

    const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();

    const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ? 
        Math.floor(Math.random() * 10).toString() :
        String.fromCharCode(65 + Math.floor(Math.random() * 26));

    const checkDigit = Math.floor(Math.random() * 10).toString();

    return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
}

// Generujte a zaznamenajte náhodný CURP
console.log(generateCURP());

Alternatívy v iných krajinách

Hoci je CURP jedinečný pre Mexiko, iné krajiny majú podobné identifikačné systémy:

  1. Spojené štáty: Číslo sociálneho zabezpečenia (SSN)
  2. Kanada: Číslo sociálneho poistenia (SIN)
  3. India: Číslo Aadhaar
  4. Brazília: Cadastro de Pessoas Físicas (CPF)

Každý systém má svoju vlastnú štruktúru a pravidlá, ale slúžia podobným účelom vo svojich príslušných krajinách.

Odkazy

  1. SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Prístup 4. augusta 2024.
  2. 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. Prístup 4. augusta 2024.
Feedback