Случаен генератор на CURP за тестови цели и валидация
Генерирайте валидни, случайни CURP (Clave Única de Registro de Población) за тестови цели. Този инструмент създава CURP, които отговарят на официалния мексикански формат и правила за валидация, без да използва реална лична информация.
Генерирай CURP
Документация
Генератор на CURP
Въведение
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 е претърпяла няколко модификации:
- През 2011 г. беше въведена диференциращата цифра, за да се разграничат хората, родени преди и след 2000 г.
- През 2012 г. алгоритъмът за изчисление на контролната цифра беше модифициран, за да се подобри уникалността.
Примери
Ето примери на код за генериране на случайни 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)
- Индия: Номер Aadhaar
- Бразилия: Cadastro de Pessoas Físicas (CPF)
Всяка система има своя собствена структура и правила, но служат за подобни цели в съответните си държави.
Източници
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Достъпно на 4 авг. 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. Достъпно на 4 авг. 2024.
Обратна връзка
Кликнете върху обратната връзка, за да започнете да давате обратна връзка за този инструмент
Свързани инструменти
Открийте още инструменти, които може да бъдат полезни за вашия работен процес