Gerador Aleatório de CURP para Testes e Validação
Gere CURPs válidos e aleatórios (Clave Única de Registro de Población) para fins de teste. Esta ferramenta cria CURPs que cumprem com o formato e as regras de validação oficiais mexicanas, sem usar informações pessoais reais.
Gerar CURP
Documentação
Gerador de CURP
Introdução
O CURP (Clave Única de Registro de Población) é um código alfanumérico único utilizado no México para fins de identificação. Esta ferramenta gera CURPs válidos e aleatórios para cenários de teste, cumprindo com o formato oficial e regras de validação. É importante notar que esses CURPs gerados não estão vinculados a indivíduos reais e devem ser usados apenas para fins de teste.
Estrutura do CURP
Um CURP consiste em 18 caracteres no seguinte formato:
- Primeira letra do sobrenome paterno
- Primeira vogal do sobrenome paterno (excluindo a primeira letra)
- Primeira letra do sobrenome materno
- Primeira letra do nome 5-10. Data de nascimento (formato YYMMDD)
- Gênero (H para masculino, M para feminino) 12-13. Código de duas letras para o estado de nascimento 14-16. Primeira consoante interna de cada componente do nome (sobrenome paterno, sobrenome materno, nome)
- Dígito de diferenciação (0-9 para pessoas nascidas antes de 2000, A-Z para aquelas nascidas a partir de 2000)
- Dígito de verificação (0-9)
Algoritmo para Gerar um CURP Aleatório
- Gerar letras aleatórias para os componentes do nome
- Gerar uma data de nascimento aleatória
- Selecionar aleatoriamente o gênero
- Selecionar aleatoriamente um código de estado válido
- Gerar consoantes aleatórias para os componentes internos do nome
- Determinar o dígito de diferenciação com base no ano de nascimento
- Calcular o dígito de verificação
- Combinar todos os componentes para formar o CURP
Regras de Validação
- Todos os caracteres alfabéticos devem estar em maiúsculas
- A data de nascimento deve ser uma data válida (incluindo consideração de anos bissextos)
- O código do estado deve ser um código de estado mexicano válido
- O dígito de diferenciação deve corresponder ao ano de nascimento
- O dígito de verificação deve ser calculado corretamente
- Lidar com casos especiais para nomes (por exemplo, sobrenomes de uma letra, nomes com Ñ)
Casos de Uso
-
Teste de Software: Os desenvolvedores podem usar esta ferramenta para gerar CURPs válidos para testar sistemas de registro de usuários, operações de banco de dados ou qualquer software que exija entrada de CURP.
-
Privacidade de Dados: Ao demonstrar software ou apresentar dados, usar CURPs gerados aleatoriamente ajuda a proteger a privacidade dos indivíduos.
-
Teste de Desempenho: Gerar grandes conjuntos de CURPs únicos para testar o desempenho do sistema sob carga.
-
Treinamento e Educação: Usar CURPs gerados em materiais educacionais sobre sistemas de identificação mexicanos sem usar dados pessoais reais.
História do CURP no México
O sistema CURP foi introduzido em 1996 pelo governo mexicano como parte de um esforço para modernizar e padronizar a identificação pessoal. Ele substituiu vários outros sistemas de identificação e se tornou um elemento crucial na burocracia mexicana, usado para tudo, desde matrícula escolar até declaração de impostos.
Ao longo dos anos, o sistema CURP passou por várias modificações:
- Em 2011, o dígito de diferenciação foi introduzido para distinguir entre pessoas nascidas antes e depois de 2000.
- Em 2012, o algoritmo para calcular o dígito de verificação foi modificado para melhorar a exclusividade.
Exemplos
Aqui estão exemplos de código para gerar CURPs aleatórios em várias linguagens de programação:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Gerar componentes do nome
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 # Gerar data de nascimento
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 # Gerar gênero
18 gender = random.choice(['H', 'M'])
19
20 # Gerar código do 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 # Gerar consoantes
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Gerar dígito de diferenciação
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Gerar dígito de verificação (simplificado para este exemplo)
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## Gerar e imprimir um CURP aleatório
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// Gerar e registrar um CURP aleatório
34console.log(generateCURP());
35
Alternativas em Outros Países
Embora o CURP seja exclusivo do México, outros países têm sistemas de identificação semelhantes:
- Estados Unidos: Número de Seguro Social (SSN)
- Canadá: Número de Seguro Social (SIN)
- Índia: Número Aadhaar
- Brasil: Cadastro de Pessoas Físicas (CPF)
Cada sistema tem sua própria estrutura e regras, mas servem a propósitos semelhantes em seus respectivos países.
Referências
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Governo do México, https://www.gob.mx/curp/. Acessado em 4 de agosto de 2024.
- RENAPO (Registro Nacional de Población e Identidad). "Instructivo Normativo para a Asignação da Clave Única de Registro de Población." Governo do México, https://www.gob.mx/cms/uploads/attachment/file/79053/InstructivoNormativoCURP.pdf. Acessado em 4 de agosto de 2024.
Feedback
Clique no feedback toast para começar a dar feedback sobre esta ferramenta
Ferramentas Relacionadas
Descubra mais ferramentas que podem ser úteis para o seu fluxo de trabalho