Whiz Tools

CURP Üretici

Giriş

CURP (Clave Única de Registro de Población), Meksika'da kimlik amaçları için kullanılan benzersiz alfanümerik bir koddur. Bu araç, resmi format ve doğrulama kurallarına uyarak test senaryoları için geçerli, rastgele CURP'ler üretir. Üretilen bu CURP'lerin gerçek bireylere bağlı olmadığını ve yalnızca test amaçları için kullanılmaları gerektiğini belirtmek önemlidir.

CURP Yapısı

Bir CURP, aşağıdaki formatta 18 karakterden oluşur:

  1. Baba soyadının ilk harfi
  2. Baba soyadının ilk sesli harfi (ilk harf hariç)
  3. Anne soyadının ilk harfi
  4. Verilen ismin ilk harfi 5-10. Doğum tarihi (YYMMDD formatı)
  5. Cinsiyet (Erkek için H, Kadın için M) 12-13. Doğum yeri eyaletinin iki harfli kodu 14-16. Her isim bileşeninin (baba soyadı, anne soyadı, verilen isim) ilk iç ünlüsü
  6. Farklılaştırma rakamı (2000'den önce doğanlar için 0-9, 2000 ve sonrası için A-Z)
  7. Kontrol rakamı (0-9)

Rastgele CURP Üretme Algoritması

  1. İsim bileşenleri için rastgele harfler üret
  2. Rastgele bir doğum tarihi oluştur
  3. Cinsiyeti rastgele seç
  4. Geçerli bir eyalet kodu rastgele seç
  5. İç isim bileşenleri için rastgele ünlüler üret
  6. Doğum yılına göre farklılaştırma rakamını belirle
  7. Kontrol rakamını hesapla
  8. Tüm bileşenleri birleştirerek CURP'yi oluştur

Doğrulama Kuralları

  • Tüm alfabetik karakterler büyük harfle olmalıdır
  • Doğum tarihi geçerli bir tarih olmalıdır (artık yıl dikkate alınmalıdır)
  • Eyalet kodu geçerli bir Meksika eyalet kodu olmalıdır
  • Farklılaştırma rakamı doğum yılına karşılık gelmelidir
  • Kontrol rakamı doğru bir şekilde hesaplanmalıdır
  • İsimler için özel durumları ele al (örneğin, tek harfli soyadlar, Ñ içeren isimler)

Kullanım Senaryoları

  1. Yazılım Testi: Geliştiriciler, kullanıcı kayıt sistemleri, veritabanı işlemleri veya CURP girişi gerektiren herhangi bir yazılım için geçerli CURP'ler üretmek için bu aracı kullanabilir.

  2. Veri Gizliliği: Yazılımı tanıtırken veya veri sunarken, rastgele üretilen CURP'lerin kullanılması bireylerin gizliliğini korumaya yardımcı olur.

  3. Performans Testi: Sistem performansını yük altında test etmek için benzersiz CURP'lerin büyük setlerini üretin.

  4. Eğitim ve Öğretim: Gerçek kişisel verileri kullanmadan Meksika kimlik sistemleri hakkında eğitim materyallerinde üretilen CURP'leri kullanın.

Meksika'da CURP Tarihçesi

CURP sistemi, Meksika hükümeti tarafından 1996 yılında kişisel kimlikleri modernize etme ve standartlaştırma çabası kapsamında tanıtıldı. Çeşitli diğer kimlik sistemlerinin yerini aldı ve Meksika bürokrasisinde, okul kaydından vergi beyannamesine kadar her şeyde kritik bir unsur haline geldi.

Yıllar içinde CURP sistemi birkaç değişiklik geçirdi:

  • 2011 yılında, 2000'den önce ve sonra doğanları ayırt etmek için farklılaştırma rakamı tanıtıldı.
  • 2012 yılında, kontrol rakamını hesaplama algoritması, benzersizliği artırmak için değiştirildi.

Örnekler

İşte çeşitli programlama dillerinde rastgele CURP'ler üretmek için kod örnekleri:

import random
import string
from datetime import datetime, timedelta

def generate_curp():
    # İsim bileşenlerini oluştur
    paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
    maternal = random.choice(string.ascii_uppercase)
    given = random.choice(string.ascii_uppercase)

    # Doğum tarihini oluştur
    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")

    # Cinsiyeti oluştur
    gender = random.choice(['H', 'M'])

    # Eyalet kodunu oluştur
    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)

    # Ünlüleri oluştur
    consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))

    # Farklılaştırma rakamını oluştur
    diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)

    # Kontrol rakamını oluştur (bu örnek için basitleştirilmiş)
    check_digit = random.choice(string.digits)

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

## Rastgele bir CURP üret ve yazdır
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}`;
}

// Rastgele bir CURP üret ve yazdır
console.log(generateCURP());

Diğer Ülkelerdeki Alternatifler

CURP, Meksika'ya özgü olsa da, diğer ülkelerde benzer kimlik sistemleri bulunmaktadır:

  1. Amerika Birleşik Devletleri: Sosyal Güvenlik Numarası (SSN)
  2. Kanada: Sosyal Sigorta Numarası (SIN)
  3. Hindistan: Aadhaar Numarası
  4. Brezilya: Cadastro de Pessoas Físicas (CPF)

Her sistemin kendi yapısı ve kuralları vardır, ancak benzer amaçlara hizmet etmektedirler.

Referanslar

  1. SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Erişim tarihi 4 Ağu. 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. Erişim tarihi 4 Ağu. 2024.
Feedback