Сгенерировать 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 на различных языках программирования:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Генерация компонентов имени
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Генерация даты рождения
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")
# Генерация пола
gender = random.choice(['H', 'M'])
# Генерация кода штата
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)
# Генерация согласных
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Генерация дифференцирующей цифры
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Генерация контрольной цифры (упрощено для этого примера)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Генерация и вывод случайного CURP
print(generate_curp())
Альтернативы в других странах
Хотя 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.