Generador Aleatorio de CURP para Pruebas y Validación
Genera CURPs válidos y aleatorios (Clave Única de Registro de Población) para fines de prueba. Esta herramienta crea CURPs que cumplen con el formato y las reglas de validación oficiales mexicanas, sin utilizar información personal real.
Generar CURP
Documentación
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:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generar componentes del nombre
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 # Generar fecha de nacimiento
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 # Generar género
18 gender = random.choice(['H', 'M'])
19
20 # Generar código de estado
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 # Generar consonantes
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generar dígito de diferenciación
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generar dígito de verificación (simplificado para este ejemplo)
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## Generar y imprimir una CURP aleatoria
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// Generar y registrar una CURP aleatoria
34console.log(generateCURP());
35
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.
Retroalimentación
Haga clic en el aviso de comentarios para comenzar a dar comentarios sobre esta herramienta.
Herramientas Relacionadas
Descubre más herramientas que podrían ser útiles para tu flujo de trabajo