Generator slučajnog CURP-a za testiranje podataka
Generirajte valjane, slučajne CURP-ove (Clave Única de Registro de Población) u svrhu testiranja. Ovaj alat stvara CURP-ove koji se pridržavaju službenog meksičkog formata i pravila validacije, bez korištenja stvarnih osobnih podataka.
Generiraj CURP
Dokumentacija
CURP Generator
Uvod
CURP (Clave Única de Registro de Población) je jedinstveni alfanumerički kod koji se koristi u Meksiku u svrhe identifikacije. Ovaj alat generira važeće, nasumične CURP-ove za testne scenarije, u skladu s službenim formatom i pravilima validacije. Važno je napomenuti da ovi generirani CURP-ovi nisu povezani s stvarnim osobama i trebaju se koristiti samo u svrhe testiranja.
Struktura CURP-a
CURP se sastoji od 18 znakova u sljedećem formatu:
- Prvo slovo prezimena oca
- Prva samoglasnik prezimena oca (izuzevši prvo slovo)
- Prvo slovo prezimena majke
- Prvo slovo imena 5-10. Datum rođenja (YYMMDD format)
- Spol (H za muškarce, M za žene) 12-13. Dvije slova koda za državu rođenja 14-16. Prva unutarnja suglasnika svakog sastojka imena (prezime oca, prezime majke, ime)
- Diferencijalna cifra (0-9 za osobe rođene prije 2000. godine, A-Z za one rođene od 2000. godine nadalje)
- Kontrolna cifra (0-9)
Algoritam za generiranje nasumičnog CURP-a
- Generirati nasumična slova za sastojke imena
- Generirati nasumični datum rođenja
- Nasumično odabrati spol
- Nasumično odabrati važeći kod države
- Generirati nasumične suglasnike za unutarnje sastojke imena
- Odrediti diferencijalnu cifru na temelju godine rođenja
- Izračunati kontrolnu cifru
- Kombinirati sve sastojke kako bi se formirao CURP
Pravila validacije
- Svi abecedni znakovi moraju biti velika slova
- Datum rođenja mora biti važeći datum (uključujući razmatranje prijestupne godine)
- Kod države mora biti važeći meksički kod države
- Diferencijalna cifra mora odgovarati godini rođenja
- Kontrolna cifra mora biti ispravno izračunata
- Rukovati posebnim slučajevima za imena (npr. prezimena sa jednim slovom, imena s Ñ)
Upotrebe
-
Testiranje softvera: Programeri mogu koristiti ovaj alat za generiranje važećih CURP-ova za testiranje sustava registracije korisnika, operacija baze podataka ili bilo kojeg softvera koji zahtijeva unos CURP-a.
-
Privatnost podataka: Kada se demonstrira softver ili prezentiraju podaci, korištenje nasumično generiranih CURP-ova pomaže u zaštiti privatnosti pojedinaca.
-
Testiranje performansi: Generirati velike skupove jedinstvenih CURP-ova za testiranje performansi sustava pod opterećenjem.
-
Obuka i obrazovanje: Koristiti generirane CURP-ove u obrazovnim materijalima o meksičkim identifikacijskim sustavima bez korištenja stvarnih osobnih podataka.
Povijest CURP-a u Meksiku
Sistem CURP uveden je 1996. godine od strane meksičke vlade kao dio napora za modernizaciju i standardizaciju osobne identifikacije. Zamijenio je razne druge identifikacijske sustave i postao ključni element u meksičkoj birokraciji, koristi se za sve, od upisa u školu do podnošenja poreza.
Tokom godina, sistem CURP je prošao kroz nekoliko modifikacija:
- Godine 2011. uvedena je diferencijalna cifra kako bi se razlikovale osobe rođene prije i nakon 2000. godine.
- Godine 2012. modificiran je algoritam za izračunavanje kontrolne cifre kako bi se poboljšala jedinstvenost.
Primjeri
Evo primjera koda za generiranje nasumičnih CURP-ova u raznim programskim jezicima:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generirati sastojke imena
7 paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
8 maternal = random.choice(string.ascii_uppercase)
9 given = random.choice(string.ascii_uppercase)
10
11 # Generirati datum rođenja
12 start_date = datetime(1940, 1, 1)
13 end_date = datetime.now()
14 random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
15 date_str = random_date.strftime("%y%m%d")
16
17 # Generirati spol
18 gender = random.choice(['H', 'M'])
19
20 # Generirati kod države
21 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']
22 state = random.choice(states)
23
24 # Generirati suglasnike
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generirati diferencijalnu cifru
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generirati kontrolnu cifru ( pojednostavljeno za ovaj primjer)
31 check_digit = random.choice(string.digits)
32
33 return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
34
35## Generirati i ispisati nasumični CURP
36print(generate_curp())
37
1function generateCURP() {
2 const vowels = 'AEIOU';
3 const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
4 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'];
5
6 const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
7 const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
8 const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];
9
10 const paternal = randomLetter() + randomVowel();
11 const maternal = randomLetter();
12 const given = randomLetter();
13
14 const now = new Date();
15 const start = new Date(1940, 0, 1);
16 const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
17 const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');
18
19 const gender = Math.random() < 0.5 ? 'H' : 'M';
20 const state = states[Math.floor(Math.random() * states.length)];
21
22 const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();
23
24 const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ?
25 Math.floor(Math.random() * 10).toString() :
26 String.fromCharCode(65 + Math.floor(Math.random() * 26));
27
28 const checkDigit = Math.floor(Math.random() * 10).toString();
29
30 return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
31}
32
33// Generirati i ispisati nasumični CURP
34console.log(generateCURP());
35
Alternativa u drugim zemljama
Iako je CURP jedinstven za Meksiko, druge zemlje imaju slične identifikacijske sisteme:
- Sjedinjene Američke Države: Broj socijalnog osiguranja (SSN)
- Kanada: Broj socijalnog osiguranja (SIN)
- Indija: Aadhaar broj
- Brazil: Cadastro de Pessoas Físicas (CPF)
Svaki sistem ima svoju strukturu i pravila, ali služe sličnim svrhama u svojim zemljama.
Reference
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Pristupljeno 4. kolovoza 2024.
- 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. Pristupljeno 4. kolovoza 2024.
Povratne informacije
Kliknite na obavijest o povratnim informacijama da biste započeli davati povratne informacije o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni proces