Whiz Tools

تولید کننده CURP

مقدمه

CURP (Clave Única de Registro de Población) یک کد الفبایی منحصر به فرد است که در مکزیک برای مقاصد شناسایی استفاده می‌شود. این ابزار CURP‌های تصادفی و معتبر را برای سناریوهای آزمایشی تولید می‌کند که با فرمت و قوانین اعتبارسنجی رسمی مطابقت دارد. مهم است که توجه داشته باشید که این CURP‌های تولید شده به افراد واقعی مربوط نمی‌شوند و باید فقط برای مقاصد آزمایشی استفاده شوند.

ساختار 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. آزمایش نرم‌افزار: توسعه‌دهندگان می‌توانند از این ابزار برای تولید CURP‌های معتبر برای آزمایش سیستم‌های ثبت‌نام کاربر، عملیات پایگاه داده یا هر نرم‌افزاری که نیاز به ورودی CURP دارد، استفاده کنند.

  2. حریم خصوصی داده‌ها: هنگام نمایش نرم‌افزار یا ارائه داده‌ها، استفاده از CURP‌های تصادفی تولید شده به حفظ حریم خصوصی افراد کمک می‌کند.

  3. آزمایش عملکرد: تولید مجموعه‌های بزرگ از CURP‌های منحصر به فرد برای آزمایش عملکرد سیستم تحت بار.

  4. آموزش و تحصیل: استفاده از CURP‌های تولید شده در مواد آموزشی درباره سیستم‌های شناسایی مکزیکی بدون استفاده از داده‌های شخصی واقعی.

تاریخچه CURP در مکزیک

سیستم CURP در سال 1996 توسط دولت مکزیک به عنوان بخشی از تلاش برای مدرن‌سازی و استانداردسازی شناسایی شخصی معرفی شد. این سیستم جایگزین سیستم‌های شناسایی دیگر شد و به عنصر مهمی در بوروکراسی مکزیک تبدیل شد که برای همه چیز از ثبت‌نام در مدارس تا ارائه مالیات استفاده می‌شود.

در طول سال‌ها، سیستم CURP چندین تغییر را تجربه کرده است:

  • در سال 2011، رقم تمایز برای تمایز بین افرادی که قبل و بعد از سال 2000 به دنیا آمده‌اند، معرفی شد.
  • در سال 2012، الگوریتم محاسبه رقم چک تغییر کرد تا یکتایی را بهبود بخشد.

مثال‌ها

در اینجا مثال‌های کد برای تولید CURP‌های تصادفی در زبان‌های برنامه‌نویسی مختلف آورده شده است:

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. هند: شماره آدهار
  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