Generator nasumičnih CURP-ova za testiranje i validaciju
Generišite važeće, nasumične CURP-ove (Clave Única de Registro de Población) u svrhu testiranja. Ovaj alat stvara CURP-ove koji su u skladu sa zvaničnim meksičkim formatom i pravilima validacije, bez korišćenja stvarnih ličnih podataka.
Генериши CURP
Dokumentacija
CURP Generator
Увод
CURP (Clave Única de Registro de Población) је јединствени алфанумерички код који се користи у Мексику за идентификационе сврхе. Овај алат генерише валидне, насумичне CURP-ове за тестирање, у складу са званичним форматом и правилима валидације. Важно је напоменути да ови генерисани CURP-ови нису повезани са стварним особама и треба их користити само у сврхе тестирања.
Структура CURP
CURP се састоји од 18 карактера у следећем формату:
- Прво слово презимена оца
- Прво самогласник презимена оца (осим првог слова)
- Прво слово презимена мајке
- Прво слово имена 5-10. Датум рођења (YYMMDD формат)
- Пол (H за мушкарце, M за жене) 12-13. Двословни код за државу рођења 14-16. Прва унутрашња сугласник сваког компонента имена (презиме оца, презиме мајке, име)
- Разликовни број (0-9 за особе рођене пре 2000. године, A-Z за оне рођене од 2000. године надаље)
- Проверни број (0-9)
Алгоритам за генерисање насумичног CURP
- Генеришите насумична слова за компоненте имена
- Генеришите насумичан датум рођења
- Насумично изаберите пол
- Насумично изаберите валидни код државе
- Генеришите насумичне сугласнике за унутрашње компоненте имена
- Одредите разликовни број на основу године рођења
- Израчунате проверни број
- Комбинујте све компоненте да бисте формирали CURP
Правила валидације
- Сва алфабетска слова морају бити велика
- Датум рођења мора бити валидан датум (укључујући разматрање године прескока)
- Код државе мора бити валидан код мексичке државе
- Разликовни број мора одговарати години рођења
- Проверни број мора бити исправно израчунат
- Обрадите посебне случајеве за имена (нпр. презимена са једним словом, имена са Ñ)
Случајеви коришћења
-
Тестирање софтвера: Развојни програми могу користити овај алат за генерисање валидних CURP-ова за тестирање система регистрације корисника, операција база података или било ког софтвера који захтева CURP унос.
-
Приватност података: Када демонстрирате софтвер или представљате податке, коришћење насумично генерисаних CURP-ова помаже у заштити приватности појединаца.
-
Тестирање перформанси: Генеришите велике сетове јединствених CURP-ова за тестирање перформанси система под оптерећењем.
-
Обука и образовање: Користите генерисане CURP-ове у образовним материјалима о мексичким системима идентификације без коришћења стварних личних података.
Историја CURP у Мексику
Систем CURP је уведен 1996. године од стране мексичке владе као део напора да се модернизује и стандардује лична идентификација. Заменио је различите друге системе идентификације и постао кључни елемент у мексичкој бирократији, који се користи за све, од уписа у школу до подношења пореза.
Током година, систем CURP је прошао кроз неколико модификација:
-
- године, разликовни број је уведен да би се разликовали људи рођени пре и после 2000. године.
-
- године, алгоритам за израчунавање проверног броја је модификован да би се побољшала јединственост.
Примери
Ево примера кода за генерисање насумичних CURP-ова у различитим програмским језицима:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Генеришите компоненте имена
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 # Генеришите датум рођења
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 # Генеришите пол
18 gender = random.choice(['H', 'M'])
19
20 # Генеришите код државе
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 # Генеришите сугласнике
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Генеришите разликовни број
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Генеришите проверни број (поједностављено за овај пример)
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## Генеришите и испишите насумични 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// Генеришите и испишите насумични CURP
34console.log(generateCURP());
35
Алтернативе у другим земљама
Док је CURP јединствен за Мексико, друге земље имају сличне системе идентификације:
- Сједињене Државе: Социјални безбедносни број (SSN)
- Канада: Број социјалног осигурања (SIN)
- Индија: Аадхар број
- Бразил: Cadastro de Pessoas Físicas (CPF)
Сваки систем има своју структуру и правила, али служи сличним сврхама у својим земљама.
Референце
- SEGOB (Secretaría de Gobernación). "CURP - Трађи." Влада Мексика, https://www.gob.mx/curp/. Приступљено 4. августа 2024.
- RENAPO (Registro Nacional de Población e Identidad). "Инструктивни норматив за доделу Clave Única de Registro de Población." Влада Мексика, https://www.gob.mx/cms/uploads/attachment/file/79053/InstructivoNormativoCURP.pdf. Приступљено 4. августа 2024.
Povratne informacije
Kliknite na obaveštenje o povratnim informacijama da biste započeli davanje povratnih informacija o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni tok