Whiz Tools

CURP Generátor

Bevezetés

A CURP (Clave Única de Registro de Población) egy egyedi alfanumerikus kód, amelyet Mexikóban használnak az azonosítási célokra. Ez az eszköz érvényes, véletlenszerű CURP-kat generál tesztelési forgatókönyvekhez, megfelelve a hivatalos formátumnak és érvényességi szabályoknak. Fontos megjegyezni, hogy ezek a generált CURP-k nem kapcsolódnak valós személyekhez, és csak tesztelési célokra használhatók.

CURP Felépítése

A CURP 18 karakterből áll, a következő formátumban:

  1. Az apai vezetéknév első betűje
  2. Az apai vezetéknév első magánhangzója (az első betűt kizárva)
  3. Az anyai vezetéknév első betűje
  4. A keresztnevének első betűje 5-10. Születési dátum (YYMMDD formátumban)
  5. Nem (H férfi, M nő) 12-13. Kétbetűs kód a születési államhoz 14-16. Az egyes névkomponensek (apai vezetéknév, anyai vezetéknév, kereszt név) első belső mássalhangzói
  6. Megkülönböztető számjegy (0-9 a 2000 előtt született embereknek, A-Z a 2000 után születetteknek)
  7. Ellenőrző számjegy (0-9)

Véletlenszerű CURP Generálásának Algoritmus

  1. Véletlenszerű betűk generálása a névkomponensekhez
  2. Véletlenszerű születési dátum generálása
  3. Véletlenszerű nem kiválasztása
  4. Véletlenszerű érvényes államkód kiválasztása
  5. Véletlenszerű mássalhangzók generálása a belső névkomponensekhez
  6. A megkülönböztető számjegy meghatározása a születési év alapján
  7. Az ellenőrző számjegy kiszámítása
  8. Az összes komponens kombinálása a CURP létrehozásához

Érvényességi Szabályok

  • Minden betűs karakternek nagybetűsnek kell lennie
  • A születési dátumnak érvényes dátumnak kell lennie (beleértve a szökőévek figyelembevételét)
  • Az államkódnak érvényes mexikói államkódnak kell lennie
  • A megkülönböztető számjegynek meg kell felelnie a születési évnek
  • Az ellenőrző számjegynek helyesen kell kiszámítva lennie
  • Kezelni kell a nevekkel kapcsolatos különleges eseteket (pl. egybetűs vezetéknév, Ñ-t tartalmazó nevek)

Használati Esetek

  1. Szoftver Tesztelés: A fejlesztők használhatják ezt az eszközt érvényes CURP-k generálására a felhasználói regisztrációs rendszerek, adatbázis műveletek vagy bármely olyan szoftver tesztelésére, amely CURP bemenetet igényel.

  2. Adatvédelmi Szempontok: A szoftver bemutatása vagy adatainak prezentálása során a véletlenszerűen generált CURP-k használata segít megvédeni az egyének magánéletét.

  3. Teljesítmény Tesztelés: Nagy mennyiségű egyedi CURP generálása a rendszer teljesítményének terhelés alatt történő tesztelésére.

  4. Képzés és Oktatás: Generált CURP-k használata oktatási anyagokban a mexikói azonosító rendszerekről, valós személyes adatok használata nélkül.

A CURP Története Mexikóban

A CURP rendszert 1996-ban vezette be a mexikói kormány, mint a személyazonosítás modernizálására és egységesítésére irányuló erőfeszítések részeként. Különböző más azonosító rendszereket váltott fel, és kulcsfontosságú elemmé vált a mexikói bürokráciában, amelyet az iskolai beiratkozástól a adóbevallásig használnak.

Az évek során a CURP rendszer több módosításon ment keresztül:

  • 2011-ben bevezették a megkülönböztető számjegyet, hogy megkülönböztessék a 2000 előtt és után született embereket.
  • 2012-ben módosították az ellenőrző számjegy kiszámításának algoritmusát az egyediség javítása érdekében.

Példák

Itt vannak kód példák a véletlenszerű CURP-k generálására különböző programozási nyelveken:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # Névkomponensek generálása
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # Születési dátum generálása
    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")

    # Nem generálása
    gender = random.choice(['H', 'M'])

    # Államkód generálása
    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)

    # Mástalan hangzók generálása
    consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))

    # Megkülönböztető számjegy generálása
    diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)

    # Ellenőrző számjegy generálása (egyszerűsítve ebben a példában)
    check_digit = random.choice(string.digits)

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

## Véletlenszerű CURP generálása és kiírása
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}`;
}

// Véletlenszerű CURP generálása és kiírása
console.log(generateCURP());

Alternatívák Más Országokban

Bár a CURP egyedi Mexikóra, más országok hasonló azonosító rendszerekkel rendelkeznek:

  1. Egyesült Államok: Társadalombiztosítási szám (SSN)
  2. Kanada: Szociális Biztosítási Szám (SIN)
  3. India: Aadhaar Szám
  4. Brazília: Cadastro de Pessoas Físicas (CPF)

Minden rendszernek megvan a saját struktúrája és szabályai, de hasonló célokat szolgálnak a saját országukban.

Hivatkozások

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