Whiz Tools

CURP Generaattori

Johdanto

CURP (Clave Única de Registro de Población) on ainutlaatuinen alfanumeerinen koodi, jota käytetään Meksikossa tunnistamistarkoituksiin. Tämä työkalu luo voimakkaita, satunnaisia CURP-koodeja testausolosuhteita varten, noudattaen virallista muotoa ja validointisääntöjä. On tärkeää huomata, että nämä luodut CURP:t eivät liity todellisiin henkilöihin ja niitä tulisi käyttää vain testaus tarkoituksiin.

CURP:n rakenne

CURP koostuu 18 merkistä seuraavassa muodossa:

  1. Isän sukunimen ensimmäinen kirjain
  2. Isän sukunimen ensimmäinen vokaali (ilman ensimmäistä kirjainta)
  3. Äidin sukunimen ensimmäinen kirjain
  4. Etunimen ensimmäinen kirjain 5-10. Syntymäpäivä (YYMMDD-muodossa)
  5. Sukupuoli (H miehille, N naisille) 12-13. Kaksikirjaiminen koodi syntymävaltiosta 14-16. Ensimmäinen sisäinen konsonantti jokaisesta nimen osasta (isän sukunimi, äidin sukunimi, etunimi)
  6. Eroavuusnumero (0-9 ennen vuotta 2000 syntyneille, A-Z vuodesta 2000 eteenpäin syntyneille)
  7. Tarkistusnumero (0-9)

Satunnaisen CURP:n luomisen algoritmi

  1. Luo satunnaiset kirjaimet nimen osille
  2. Luo satunnainen syntymäpäivä
  3. Valitse satunnaisesti sukupuoli
  4. Valitse satunnaisesti voimassa oleva osavaltiokoodi
  5. Luo satunnaiset konsonantit sisäisille nimen osille
  6. Määritä eroavuusnumero syntymävuoden perusteella
  7. Laske tarkistusnumero
  8. Yhdistä kaikki osat muodostaaksesi CURP:n

Validointisäännöt

  • Kaikkien aakkosellisten merkkien on oltava isoja kirjaimia
  • Syntymäpäivän on oltava voimassa oleva päivämäärä (mukaan lukien karkausvuoden huomioiminen)
  • Osavaltiokoodin on oltava voimassa oleva meksikolainen osavaltiokoodi
  • Eroavuusnumeron on vastattava syntymävuotta
  • Tarkistusnumeron on oltava oikein laskettu
  • Käsittele erityistapauksia nimille (esim. yksikirjaimiset sukunimet, nimet, joissa on Ñ)

Käyttötapaukset

  1. Ohjelmistotestaus: Kehittäjät voivat käyttää tätä työkalua luodakseen voimakkaita CURP-koodeja käyttäjien rekisteröintijärjestelmien, tietokantaoperaatioiden tai minkä tahansa ohjelmiston testaamiseen, joka vaatii CURP-syötettä.

  2. Tietosuoja: Ohjelmiston esittelyssä tai tietojen esittämisessä satunnaisesti luotujen CURP:ien käyttäminen auttaa suojaamaan yksilöiden yksityisyyttä.

  3. Suorituskykytestaus: Luo suuria joukkoja ainutlaatuisia CURP:eja järjestelmän suorituskyvyn testaamiseksi kuormituksen alla.

  4. Koulutus ja opetus: Käytä luotuja CURP:eja koulutusmateriaaleissa meksikolaisista tunnistusjärjestelmistä ilman todellisten henkilötietojen käyttöä.

CURP:n historia Meksikossa

CURP-järjestelmä otettiin käyttöön vuonna 1996 Meksikon hallituksen toimesta osana pyrkimystä modernisoida ja standardoida henkilökohtaista tunnistamista. Se korvasi useita muita tunnistamisjärjestelmiä ja siitä tuli tärkeä elementti meksikolaisessa byrokratiassa, jota käytetään kaikkeen koulun ilmoittamisesta verotukseen.

Vuosien varrella CURP-järjestelmää on muutettu useita kertoja:

  • Vuonna 2011 eroavuusnumero otettiin käyttöön erottamaan ennen ja jälkeen 2000 syntyneet.
  • Vuonna 2012 tarkistusnumeron laskentakaavaa muutettiin ainutlaatuisuuden parantamiseksi.

Esimerkit

Tässä on koodiesimerkkejä satunnaisten CURP:ien luomiseksi eri ohjelmointikielillä:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # Luo nimen osat
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # Luo syntymäpäivä
    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")

    # Luo sukupuoli
    gender = random.choice(['H', 'N'])

    # Luo osavaltiokoodi
    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)

    # Luo konsonantit
    consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))

    # Luo eroavuusnumero
    diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)

    # Luo tarkistusnumero (yksinkertaistettu tätä esimerkkiä varten)
    check_digit = random.choice(string.digits)

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

## Luo ja tulosta satunnainen 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' : 'N';
    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}`;
}

// Luo ja tulosta satunnainen CURP
console.log(generateCURP());

Vaihtoehdot muissa maissa

Vaikka CURP on ainutlaatuinen Meksikolle, muilla mailla on samankaltaisia tunnistusjärjestelmiä:

  1. Yhdysvallat: Sosiaaliturvatunnus (SSN)
  2. Kanada: Sosiaalivakuutusnumero (SIN)
  3. Intia: Aadhaar-numero
  4. Brasilia: Cadastro de Pessoas Físicas (CPF)

Jokaisella järjestelmällä on oma rakenteensa ja sääntönsä, mutta ne palvelevat samankaltaisia tarkoituksia omissa maissaan.

Viitteet

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