Whiz Tools

مولد CURP

مقدمة

CURP (Clave Única de Registro de Población) هو رمز فريد يتكون من أحرف وأرقام يُستخدم في المكسيك لأغراض التعريف. تُستخدم هذه الأداة لتوليد CURPs عشوائية وصالحة لسيناريوهات الاختبار، مع الالتزام بالتنسيق الرسمي وقواعد التحقق. من المهم ملاحظة أن هذه الـ CURPs المولدة ليست مرتبطة بأفراد حقيقيين ويجب استخدامها فقط لأغراض الاختبار.

هيكل CURP

يتكون CURP من 18 حرفًا بالشكل التالي:

  1. الحرف الأول من اسم العائلة الأبوي
  2. أول حرف متحرك من اسم العائلة الأبوي (باستثناء الحرف الأول)
  3. الحرف الأول من اسم العائلة الأموي
  4. الحرف الأول من الاسم الأول 5-10. تاريخ الميلاد (بتنسيق YYMMDD)
  5. الجنس (H للذكور، M للإناث) 12-13. رمز مكون من حرفين لولاية الميلاد 14-16. أول حرف ساكن من كل مكون اسم (اسم العائلة الأبوي، اسم العائلة الأموي، الاسم الأول)
  6. رقم التمييز (0-9 للأشخاص المولودين قبل عام 2000، A-Z لأولئك المولودين من عام 2000 فصاعدًا)
  7. رقم التحقق (0-9)

خوارزمية توليد CURP عشوائي

  1. توليد أحرف عشوائية لمكونات الاسم
  2. توليد تاريخ ميلاد عشوائي
  3. اختيار الجنس عشوائيًا
  4. اختيار رمز ولاية صالح عشوائيًا
  5. توليد أحرف ساكنة عشوائية لمكونات الاسم الداخلية
  6. تحديد رقم التمييز بناءً على سنة الميلاد
  7. حساب رقم التحقق
  8. دمج جميع المكونات لتشكيل CURP

قواعد التحقق

  • يجب أن تكون جميع الأحرف الأبجدية بأحرف كبيرة
  • يجب أن يكون تاريخ الميلاد تاريخًا صالحًا (بما في ذلك اعتبار السنة الكبيسة)
  • يجب أن يكون رمز الولاية رمز ولاية مكسيكية صالحًا
  • يجب أن يتوافق رقم التمييز مع سنة الميلاد
  • يجب أن يتم حساب رقم التحقق بشكل صحيح
  • التعامل مع الحالات الخاصة للأسماء (مثل الألقاب ذات الحرف الواحد، الأسماء التي تحتوي على Ñ)

حالات الاستخدام

  1. اختبار البرمجيات: يمكن للمطورين استخدام هذه الأداة لتوليد CURPs صالحة لاختبار أنظمة تسجيل المستخدمين، أو عمليات قاعدة البيانات، أو أي برنامج يتطلب إدخال CURP.

  2. خصوصية البيانات: عند عرض البرمجيات أو تقديم البيانات، يساعد استخدام CURPs المولدة عشوائيًا في حماية خصوصية الأفراد.

  3. اختبار الأداء: توليد مجموعات كبيرة من CURPs الفريدة لاختبار أداء النظام تحت الحمل.

  4. التدريب والتعليم: استخدام CURPs المولدة في المواد التعليمية حول أنظمة التعريف المكسيكية دون استخدام بيانات شخصية حقيقية.

تاريخ CURP في المكسيك

تم تقديم نظام CURP في عام 1996 من قبل الحكومة المكسيكية كجزء من جهد لتحديث وتوحيد التعريف الشخصي. وقد حل محل أنظمة تعريف أخرى وأصبح عنصرًا حيويًا في البيروقراطية المكسيكية، يُستخدم في كل شيء من تسجيل المدارس إلى تقديم الضرائب.

على مر السنين، خضع نظام CURP لعدة تعديلات:

  • في عام 2011، تم تقديم رقم التمييز لتمييز الأشخاص المولودين قبل وبعد عام 2000.
  • في عام 2012، تم تعديل الخوارزمية لحساب رقم التحقق لتحسين التفرد.

أمثلة

إليك أمثلة برمجية لتوليد CURPs عشوائية بلغات برمجة مختلفة:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # توليد مكونات الاسم
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # توليد تاريخ الميلاد
    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")

    # توليد الجنس
    gender = random.choice(['H', 'M'])

    # توليد رمز الولاية
    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)

    # توليد أحرف ساكنة
    consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))

    # توليد رقم التمييز
    diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)

    # توليد رقم التحقق (مبسط لهذا المثال)
    check_digit = random.choice(string.digits)

    return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"

## توليد وطباعة CURP عشوائي
print(generate_curp())
function generateCURP() {
    const vowels = 'AEIOU';
    const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
    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'];

    const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
    const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
    const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];

    const paternal = randomLetter() + randomVowel();
    const maternal = randomLetter();
    const given = randomLetter();

    const now = new Date();
    const start = new Date(1940, 0, 1);
    const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
    const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');

    const gender = Math.random() < 0.5 ? 'H' : 'M';
    const state = states[Math.floor(Math.random() * states.length)];

    const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();

    const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ? 
        Math.floor(Math.random() * 10).toString() :
        String.fromCharCode(65 + Math.floor(Math.random() * 26));

    const checkDigit = Math.floor(Math.random() * 10).toString();

    return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
}

// توليد وتسجيل CURP عشوائي
console.log(generateCURP());

بدائل في دول أخرى

بينما يُعتبر CURP فريدًا من نوعه في المكسيك، فإن الدول الأخرى لديها أنظمة تعريف مشابهة:

  1. الولايات المتحدة: رقم الضمان الاجتماعي (SSN)
  2. كندا: رقم التأمين الاجتماعي (SIN)
  3. الهند: رقم Aadhaar
  4. البرازيل: Cadastro de Pessoas Físicas (CPF)

كل نظام له هيكله وقواعده الخاصة، لكنه يخدم أغراضًا مشابهة في دوله المعنية.

المراجع

  1. SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. تم الوصول إليه في 4 أغسطس 2024.
  2. 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. تم الوصول إليه في 4 أغسطس 2024.
Feedback