Whiz Tools

CURP ģenerators

Ievads

CURP (Clave Única de Registro de Población) ir unikāls alfanumerisks kods, ko Meksikā izmanto identifikācijas nolūkiem. Šis rīks ģenerē derīgus, nejaušus CURP kodus testēšanas scenārijiem, atbilstot oficiālajam formātam un validācijas noteikumiem. Ir svarīgi atzīmēt, ka šie ģenerētie CURP kodi nav saistīti ar reālām personām un tos drīkst izmantot tikai testēšanas nolūkos.

CURP struktūra

CURP sastāv no 18 rakstzīmēm šādā formātā:

  1. Paternalā uzvārda pirmā burts
  2. Paternalā uzvārda pirmā patskaņa burts (izņemot pirmo burtu)
  3. Materiālā uzvārda pirmā burts
  4. Vārda pirmā burts 5-10. Dzimšanas datums (YYMMDD formāts)
  5. Dzimums (H vīriešiem, M sievietēm) 12-13. Divu burtu kods dzimšanas valstij 14-16. Pirmais iekšējais līdzskaņu burts katram vārda komponentam (paternalais uzvārds, materiālais uzvārds, vārds)
  6. Atšķirības cipars (0-9 cilvēkiem, kas dzimuši pirms 2000. gada, A-Z tiem, kas dzimuši no 2000. gada)
  7. Pārbaudes cipars (0-9)

Algoritms nejauša CURP ģenerēšanai

  1. Ģenerēt nejaušus burtus vārda komponentiem
  2. Ģenerēt nejaušu dzimšanas datumu
  3. Nejauši izvēlēties dzimumu
  4. Nejauši izvēlēties derīgu valsts kodu
  5. Ģenerēt nejaušus līdzskaņus iekšējiem vārda komponentiem
  6. Noteikt atšķirības ciparu, pamatojoties uz dzimšanas gadu
  7. Aprēķināt pārbaudes ciparu
  8. Apvienot visus komponentus, lai izveidotu CURP

Validācijas noteikumi

  • Visi alfabēta burtiem jābūt lielajiem burtiem
  • Dzimšanas datumam jābūt derīgam datumam (ieskaitot lēciena gadu ņemšanu vērā)
  • Valsts kodam jābūt derīgam Meksikas valsts kodam
  • Atšķirības ciparam jāatbilst dzimšanas gadam
  • Pārbaudes ciparam jābūt pareizi aprēķinātam
  • Rīkoties ar īpašiem gadījumiem vārdiem (piemēram, vienas burta uzvārdi, vārdi ar Ñ)

Lietošanas gadījumi

  1. Programmatūras testēšana: Izstrādātāji var izmantot šo rīku, lai ģenerētu derīgus CURP kodus, lai testētu lietotāju reģistrācijas sistēmas, datu bāzes darbības vai jebkuru programmatūru, kas prasa CURP ievadi.

  2. Datu privātums: Demonstrējot programmatūru vai prezentējot datus, izmantojot nejauši ģenerētus CURP kodus, palīdz aizsargāt indivīdu privātumu.

  3. Veiktspējas testēšana: Ģenerēt lielus unikālu CURP kodu komplektus, lai pārbaudītu sistēmas veiktspēju slodzes apstākļos.

  4. Apmācība un izglītība: Izmantot ģenerētus CURP kodus izglītības materiālos par Meksikas identifikācijas sistēmām, neizmantojot reālus personas datus.

CURP vēsture Meksikā

CURP sistēma tika ieviesta 1996. gadā Meksikas valdības iniciatīvas ietvaros, lai modernizētu un standartizētu personu identifikāciju. Tā aizstāja dažādas citas identifikācijas sistēmas un kļuva par svarīgu elementu Meksikas birokrātijā, ko izmanto visur, sākot no skolu reģistrācijas līdz nodokļu iesniegšanai.

Gadu gaitā CURP sistēma ir piedzīvojusi vairākas izmaiņas:

    1. gadā tika ieviests atšķirības cipars, lai atšķirtu cilvēkus, kas dzimuši pirms un pēc 2000. gada.
    1. gadā tika mainīts algoritms pārbaudes cipara aprēķināšanai, lai uzlabotu unikālumu.

Piemēri

Šeit ir koda piemēri, lai ģenerētu nejaušus CURP kodus dažādās programmēšanas valodās:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # Ģenerēt vārdu komponentus
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # Ģenerēt dzimšanas datumu
    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")

    # Ģenerēt dzimumu
    gender = random.choice(['H', 'M'])

    # Ģenerēt valsts kodu
    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)

    # Ģenerēt līdzskaņus
    consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))

    # Ģenerēt atšķirības ciparu
    diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)

    # Ģenerēt pārbaudes ciparu (vienkāršots šim piemēram)
    check_digit = random.choice(string.digits)

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

## Ģenerēt un izdrukāt nejaušu 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}`;
}

// Ģenerēt un izdrukāt nejaušu CURP
console.log(generateCURP());

Alternatīvas citās valstīs

Lai gan CURP ir unikāls Meksikai, citām valstīm ir līdzīgas identifikācijas sistēmas:

  1. Amerikas Savienotās Valstis: Sociālās nodrošināšanas numurs (SSN)
  2. Kanāda: Sociālās apdrošināšanas numurs (SIN)
  3. Indija: Aadhaar numurs
  4. Brazīlija: Cadastro de Pessoas Físicas (CPF)

Katrai sistēmai ir sava struktūra un noteikumi, taču tās kalpo līdzīgiem mērķiem attiecīgajās valstīs.

Atsauces

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