Generador de CURP
Introducción
La CURP (Clave Única de Registro de Población) es un código alfanumérico único utilizado en México para fines de identificación. Esta herramienta genera CURPs válidos y aleatorios para escenarios de prueba, cumpliendo con el formato oficial y las reglas de validación. Es importante señalar que estos CURPs generados no están vinculados a personas reales y solo deben utilizarse para fines de prueba.
Estructura de la CURP
Una CURP consta de 18 caracteres en el siguiente formato:
- Primera letra del apellido paterno
- Primera vocal del apellido paterno (excluyendo la primera letra)
- Primera letra del apellido materno
- Primera letra del nombre 5-10. Fecha de nacimiento (formato YYMMDD)
- Género (H para hombre, M para mujer) 12-13. Código de dos letras para el estado de nacimiento 14-16. Primera consonante interna de cada componente del nombre (apellido paterno, apellido materno, nombre)
- Dígito de diferenciación (0-9 para personas nacidas antes de 2000, A-Z para aquellos nacidos a partir de 2000)
- Dígito de verificación (0-9)
Algoritmo para Generar una CURP Aleatoria
- Generar letras aleatorias para los componentes del nombre
- Generar una fecha de nacimiento aleatoria
- Seleccionar aleatoriamente el género
- Seleccionar aleatoriamente un código de estado válido
- Generar consonantes aleatorias para los componentes internos del nombre
- Determinar el dígito de diferenciación basado en el año de nacimiento
- Calcular el dígito de verificación
- Combinar todos los componentes para formar la CURP
Reglas de Validación
- Todos los caracteres alfabéticos deben estar en mayúsculas
- La fecha de nacimiento debe ser una fecha válida (incluyendo la consideración de años bisiestos)
- El código de estado debe ser un código de estado mexicano válido
- El dígito de diferenciación debe corresponder al año de nacimiento
- El dígito de verificación debe calcularse correctamente
- Manejar casos especiales para nombres (por ejemplo, apellidos de una sola letra, nombres con Ñ)
Casos de Uso
-
Pruebas de Software: Los desarrolladores pueden usar esta herramienta para generar CURPs válidos para probar sistemas de registro de usuarios, operaciones de bases de datos o cualquier software que requiera la entrada de CURP.
-
Privacidad de Datos: Al demostrar software o presentar datos, el uso de CURPs generados aleatoriamente ayuda a proteger la privacidad de las personas.
-
Pruebas de Rendimiento: Generar grandes conjuntos de CURPs únicos para probar el rendimiento del sistema bajo carga.
-
Capacitación y Educación: Usar CURPs generados en materiales educativos sobre sistemas de identificación mexicanos sin utilizar datos personales reales.
Historia de la CURP en México
El sistema CURP fue introducido en 1996 por el gobierno mexicano como parte de un esfuerzo por modernizar y estandarizar la identificación personal. Reemplazó varios otros sistemas de identificación y se convirtió en un elemento crucial en la burocracia mexicana, utilizado para todo, desde la inscripción escolar hasta la presentación de impuestos.
A lo largo de los años, el sistema CURP ha sufrido varias modificaciones:
- En 2011, se introdujo el dígito de diferenciación para distinguir entre personas nacidas antes y después de 2000.
- En 2012, se modificó el algoritmo para calcular el dígito de verificación para mejorar la unicidad.
Ejemplos
Aquí hay ejemplos de código para generar CURPs aleatorias en varios lenguajes de programación:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generar componentes del nombre
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generar fecha de nacimiento
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")
# Generar género
gender = random.choice(['H', 'M'])
# Generar código de estado
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)
# Generar consonantes
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generar dígito de diferenciación
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generar dígito de verificación (simplificado para este ejemplo)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generar y imprimir una CURP aleatoria
print(generate_curp())
Alternativas en Otros Países
Si bien la CURP es única de México, otros países tienen sistemas de identificación similares:
- Estados Unidos: Número de Seguro Social (SSN)
- Canadá: Número de Seguro Social (SIN)
- India: Número Aadhaar
- Brasil: Cadastro de Pessoas Físicas (CPF)
Cada sistema tiene su propia estructura y reglas, pero cumplen propósitos similares en sus respectivos países.
Referencias
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Consultado el 4 de agosto de 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. Consultado el 4 de agosto de 2024.