CURP Generator
Introduction
ה-CURP (Clave Única de Registro de Población) הוא קוד אלפאנומרי ייחודי שמשמש במקסיקו למטרות זיהוי. הכלי הזה יוצר CURPs תקפים ורנדומליים לסנריואים של בדיקות, בהתאם לפורמט ולחוקי האימות הרשמים. חשוב לציין שה-CURPs המיוצרים אינם קשורים לאנשים אמיתיים ויש להשתמש בהם רק למטרות בדיקה.
Structure of CURP
CURP מורכב מ-18 תווים בפורמט הבא:
- האות הראשונה של שם המשפחה האבהי
- התנועה הראשונה של שם המשפחה האבהי (למעט האות הראשונה)
- האות הראשונה של שם המשפחה האמהי
- האות הראשונה של השם הפרטי 5-10. תאריך הלידה (בפורמט YYMMDD)
- מגדר (H עבור זכר, M עבור נקבה) 12-13. קוד בן-שניים למדינת הלידה 14-16. העיצור הראשון של כל רכיב שם (שם משפחה אבהי, שם משפחה אמהי, שם פרטי)
- ספרת הבחנה (0-9 עבור אנשים שנולדו לפני 2000, A-Z עבור אלו שנולדו מ-2000 ואילך)
- ספרת בדיקה (0-9)
Algorithm for Generating a Random CURP
- יצירת אותיות רנדומליות עבור רכיבי השם
- יצירת תאריך לידה רנדומלי
- בחירת מגדר רנדומלי
- בחירת קוד מדינה תקף רנדומלי
- יצירת עיצורים רנדומליים עבור רכיבי השם הפנימיים
- קביעת ספרת הבחנה על סמך שנת הלידה
- חישוב ספרת הבדיקה
- שילוב כל הרכיבים ליצירת ה-CURP
Validation Rules
- כל התווים האלפביתיים חייבים להיות באותיות גדולות
- תאריך הלידה חייב להיות תאריך תקף (כולל התחשבות בשנה מעוברת)
- קוד המדינה חייב להיות קוד מדינה מקסיקני תקף
- ספרת הבחנה חייבת להתאים לשנת הלידה
- ספרת הבדיקה חייבת להיות מחושבת כהלכה
- טיפול במקרים מיוחדים עבור שמות (למשל, שמות משפחה באות אחת, שמות עם Ñ)
Use Cases
-
בדיקות תוכנה: מפתחים יכולים להשתמש בכלי הזה ליצירת CURPs תקפים לצורך בדיקות מערכות רישום משתמשים, פעולות במסד נתונים, או כל תוכנה שדורשת קלט CURP.
-
פרטיות נתונים: כאשר מדגימים תוכנה או מציגים נתונים, השימוש ב-CURPs שנוצרו רנדומלית עוזר להגן על פרטיות הפרטים.
-
בדיקות ביצועים: יצירת קבוצות גדולות של CURPs ייחודיים לצורך בדיקת ביצועי המערכת תחת עומס.
-
הכשרה וחינוך: שימוש ב-CURPs שנוצרו בחומרי לימוד על מערכות זיהוי מקסיקניות מבלי להשתמש בנתונים אישיים אמיתיים.
History of CURP in Mexico
מערכת ה-CURP הוצגה בשנת 1996 על ידי הממשלה המקסיקנית כחלק ממאמצים לייעל ולסטנדרטיזציה של זיהוי אישי. היא החליפה מערכות זיהוי אחרות והפכה לרכיב קרדינלי בבירוקרטיה המקסיקנית, שמשמשת לכל דבר, החל מרישום בבתי ספר ועד הגשת מיסים.
עם השנים, מערכת ה-CURP עברה מספר שינויים:
- בשנת 2011, ספרת הבחנה הוצגה כדי להבחין בין אנשים שנולדו לפני ואחרי 2000.
- בשנת 2012, האלגוריתם לחישוב ספרת הבדיקה שונה כדי לשפר את הייחודיות.
Examples
הנה דוגמאות קוד ליצירת CURPs רנדומליים בשפות תכנות שונות:
import random
import string
from datetime import datetime, timedelta
def generate_curp():
# Generate name components
paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
maternal = random.choice(string.ascii_uppercase)
given = random.choice(string.ascii_uppercase)
# Generate date of birth
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")
# Generate gender
gender = random.choice(['H', 'M'])
# Generate state code
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)
# Generate consonants
consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
# Generate differentiation digit
diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
# Generate check digit (simplified for this example)
check_digit = random.choice(string.digits)
return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
## Generate and print a random CURP
print(generate_curp())
Alternatives in Other Countries
בעוד שה-CURP ייחודי למקסיקו, מדינות אחרות יש מערכות זיהוי דומות:
- ארצות הברית: מספר ביטוח לאומי (SSN)
- קנדה: מספר ביטוח חברתי (SIN)
- הודו: מספר Aadhaar
- ברזיל: Cadastro de Pessoas Físicas (CPF)
כל מערכת יש את המבנה והחוקים שלה, אך הן משרתות מטרות דומות במדינות שלהן.
References
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Accessed 4 Aug. 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. Accessed 4 Aug. 2024.