Whiz Tools

Generátor CURP

Uvod

CURP (Clave Única de Registro de Población) je edinstvena alfanumerična koda, ki se uporablja v Mehiki za identifikacijske namene. Ta orodje generira veljavne, naključne CURP-e za testne scenarije, ki ustrezajo uradnemu formatu in pravilom validacije. Pomembno je omeniti, da ti generirani CURP-i niso povezani z resničnimi posamezniki in jih je mogoče uporabljati samo za testne namene.

Struktura CURP

CURP se sestavlja iz 18 znakov v naslednjem formatu:

  1. Prvo črko očetovega priimka
  2. Prvo samoglasnik očetovega priimka (brez prve črke)
  3. Prvo črko materinega priimka
  4. Prvo črko imena 5-10. Datum rojstva (format YYMMDD)
  5. Spol (H za moške, M za ženske) 12-13. Dvotčkovna koda za zvezno državo rojstva 14-16. Prva notranja soglasnika vsakega dela imena (očetov priimek, materin priimek, ime)
  6. Diferencirna cifra (0-9 za ljudi, rojene pred letom 2000, A-Z za tiste, rojene od leta 2000 naprej)
  7. Kontrolna cifra (0-9)

Algoritem za generiranje naključnega CURP

  1. Generirajte naključne črke za sestavne dele imena
  2. Generirajte naključni datum rojstva
  3. Naključno izberite spol
  4. Naključno izberite veljavno kodo zvezne države
  5. Generirajte naključne soglasnike za notranje sestavne dele imena
  6. Določite diferencirno cifro na podlagi leta rojstva
  7. Izračunajte kontrolno cifro
  8. Združite vse sestavne dele, da oblikujete CURP

Pravila validacije

  • Vse abecedne znake je treba pisati z velikimi črkami
  • Datum rojstva mora biti veljaven datum (vključno z upoštevanjem prestopnega leta)
  • Koda zvezne države mora biti veljavna koda mehiške zvezne države
  • Diferencirna cifra mora ustrezati letu rojstva
  • Kontrolna cifra mora biti pravilno izračunana
  • Obvladovanje posebnih primerov za imena (npr. enopostavne priimke, imena z Ñ)

Uporabniški primeri

  1. Testiranje programske opreme: Razvijalci lahko to orodje uporabijo za generiranje veljavnih CURP-ov za testiranje sistemov za registracijo uporabnikov, operacij z bazami podatkov ali katere koli programske opreme, ki zahteva vnos CURP.

  2. Zasebnost podatkov: Pri predstavitvi programske opreme ali podatkov uporaba naključno generiranih CURP-ov pomaga zaščititi zasebnost posameznikov.

  3. Testiranje zmogljivosti: Generirajte velike nize edinstvenih CURP-ov za testiranje zmogljivosti sistema pod obremenitvijo.

  4. Usposabljanje in izobraževanje: Uporabite generirane CURP-e v izobraževalnih materialih o mehiških identifikacijskih sistemih, ne da bi uporabili resničnih osebnih podatkov.

Zgodovina CURP v Mehiki

Sistem CURP je bil uveden leta 1996 s strani mehiške vlade kot del prizadevanj za modernizacijo in standardizacijo osebne identifikacije. Zamenjal je različne druge identifikacijske sisteme in postal ključni element mehiške birokracije, ki se uporablja za vse, od vpisa v šolo do davčnega poročanja.

Skozi leta je sistem CURP doživel več sprememb:

  • Leta 2011 je bila uvedena diferencirna cifra, da bi ločili med ljudmi, rojenimi pred in po letu 2000.
  • Leta 2012 je bil algoritem za izračun kontrolne cifre spremenjen, da bi izboljšali edinstvenost.

Primeri

Tukaj so primeri kode za generiranje naključnih CURP-ov v različnih programskih jezikih:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # Generirajte sestavne dele imena
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # Generirajte datum rojstva
    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")

    # Generirajte spol
    gender = random.choice(['H', 'M'])

    # Generirajte kodo zvezne države
    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)

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

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

    # Generirajte kontrolno cifro (poenostavljeno za ta primer)
    check_digit = random.choice(string.digits)

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

## Generirajte in natisnite naključni 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}`;
}

// Generirajte in izpišite naključni CURP
console.log(generateCURP());

Alternativen v drugih državah

Medtem ko je CURP edinstven za Mehiko, imajo druge države podobne identifikacijske sisteme:

  1. Združene države: Številka socialne varnosti (SSN)
  2. Kanada: Številka socialne pomoči (SIN)
  3. Indija: Številka Aadhaar
  4. Brazilija: Cadastro de Pessoas Físicas (CPF)

Vsak sistem ima svojo strukturo in pravila, vendar služi podobnim namenom v svojih državah.

Reference

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