Générateur de CURP
Introduction
Le CURP (Clave Única de Registro de Población) est un code alphanumérique unique utilisé au Mexique à des fins d'identification. Cet outil génère des CURP valides et aléatoires pour des scénarios de test, en respectant le format officiel et les règles de validation. Il est important de noter que ces CURP générés ne sont pas liés à de vraies personnes et doivent uniquement être utilisés à des fins de test.
Structure du CURP
Un CURP se compose de 18 caractères dans le format suivant :
- Première lettre du nom de famille paternel
- Première voyelle du nom de famille paternel (à l'exclusion de la première lettre)
- Première lettre du nom de famille maternel
- Première lettre du prénom 5-10. Date de naissance (format YYMMDD)
- Genre (H pour homme, M pour femme) 12-13. Code à deux lettres de l'état de naissance 14-16. Première consonne interne de chaque composant du nom (nom de famille paternel, nom de famille maternel, prénom)
- Chiffre de différenciation (0-9 pour les personnes nées avant 2000, A-Z pour celles nées à partir de 2000)
- Chiffre de contrôle (0-9)
Algorithme pour générer un CURP aléatoire
- Générer des lettres aléatoires pour les composants du nom
- Générer une date de naissance aléatoire
- Sélectionner aléatoirement un genre
- Sélectionner aléatoirement un code d'état valide
- Générer des consonnes aléatoires pour les composants internes du nom
- Déterminer le chiffre de différenciation en fonction de l'année de naissance
- Calculer le chiffre de contrôle
- Combiner tous les composants pour former le CURP
Règles de validation
- Tous les caractères alphabétiques doivent être en majuscules
- La date de naissance doit être une date valide (y compris la prise en compte des années bissextiles)
- Le code de l'état doit être un code d'état mexicain valide
- Le chiffre de différenciation doit correspondre à l'année de naissance
- Le chiffre de contrôle doit être correctement calculé
- Gérer les cas spéciaux pour les noms (par exemple, les noms de famille d'une seule lettre, les noms avec Ñ)
Cas d'utilisation
-
Tests logiciels : Les développeurs peuvent utiliser cet outil pour générer des CURP valides pour tester les systèmes d'enregistrement des utilisateurs, les opérations de base de données ou tout logiciel nécessitant une saisie de CURP.
-
Protection des données : Lors de la démonstration de logiciels ou de la présentation de données, l'utilisation de CURP générés aléatoirement aide à protéger la vie privée des individus.
-
Tests de performance : Générer de grands ensembles de CURP uniques pour tester les performances du système sous charge.
-
Formation et éducation : Utiliser des CURP générés dans des supports éducatifs sur les systèmes d'identification mexicains sans utiliser de données personnelles réelles.
Histoire du CURP au Mexique
Le système CURP a été introduit en 1996 par le gouvernement mexicain dans le cadre d'un effort de modernisation et de standardisation de l'identification personnelle. Il a remplacé divers autres systèmes d'identification et est devenu un élément crucial de la bureaucratie mexicaine, utilisé pour tout, de l'inscription scolaire au dépôt fiscal.
Au fil des ans, le système CURP a subi plusieurs modifications :
- En 2011, le chiffre de différenciation a été introduit pour distinguer les personnes nées avant et après 2000.
- En 2012, l'algorithme de calcul du chiffre de contrôle a été modifié pour améliorer l'unicité.
Exemples
Voici des exemples de code pour générer des CURP aléatoires dans divers langages de programmation :
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Générer des composants de nom
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Générer une date de naissance
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")
# Générer le genre
gender = random.choice(['H', 'M'])
# Générer le code de l'état
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)
# Générer des consonnes
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Générer le chiffre de différenciation
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Générer le chiffre de contrôle (simplifié pour cet exemple)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Générer et imprimer un CURP aléatoire
print(generate_curp())
Alternatives dans d'autres pays
Bien que le CURP soit unique au Mexique, d'autres pays ont des systèmes d'identification similaires :
- États-Unis : Numéro de sécurité sociale (SSN)
- Canada : Numéro d'assurance sociale (NAS)
- Inde : Numéro Aadhaar
- Brésil : Cadastro de Pessoas Físicas (CPF)
Chaque système a sa propre structure et ses propres règles, mais ils servent des objectifs similaires dans leurs pays respectifs.
Références
- SEGOB (Secrétariat de la Gouvernance). "CURP - Trámites." Gouvernement du Mexique, https://www.gob.mx/curp/. Consulté le 4 août 2024.
- RENAPO (Registre National de la Population et de l'Identité). "Instructif Normatif pour l'Attribution de la Clé Unique de Registre de Population." Gouvernement du Mexique, https://www.gob.mx/cms/uploads/attachment/file/79053/InstructivoNormativoCURP.pdf. Consulté le 4 août 2024.