Random CPF Generator for Testing Purposes in Brazil
Test amaçları için geçerli, rastgele CPF (Cadastro de Pessoas Físicas) numaraları oluşturun. Bu araç, resmi Brezilya formatı ve doğrulama kurallarına uygun CPFlere, gerçek kişisel bilgileri kullanmadan oluşturur.
CPF Oluştur
Dokümantasyon
CPF Üretici
Giriş
CPF (Cadastro de Pessoas Físicas), Brezilya vatandaşlarına ve sakinlerine vergi amaçları için atanan benzersiz bir tanımlayıcıdır. Bu üretici, test amaçları için geçerli, rastgele CPF numaraları oluşturur. Üretilen bu CPFlere gerçek bireylerle ilişkilendirilmediğini ve yalnızca test ortamlarında kullanılmaları gerektiğini belirtmek önemlidir.
CPF Yapısı
Bir CPF 11 rakamdan oluşur:
- İlk 9 rakam temel sayılardır
- Son 2 rakam kontrol rakamlarıdır
Format genellikle şu şekilde temsil edilir: XXX.XXX.XXX-XX
CPF Doğrulama Algoritması
CPF doğrulama algoritması, numaranın bütünlüğünü sağlar. İşte nasıl çalıştığı:
- İlk 9 rakamı ağırlıklarla (10'dan 2'ye) çarpın
- Sonuçları toplayın
- Toplamın 11'e bölümünden kalanı hesaplayın
- Eğer kalan 2'den küçükse, ilk kontrol rakamı 0'dır; aksi takdirde, kalan 11'den çıkarılır
- İlk 10 rakam (ilk kontrol rakamı dahil) için aynı işlemi 11'den 2'ye kadar ağırlıklarla tekrarlayın
- İkinci kontrol rakamını ilk rakam için aynı kurala göre hesaplayın
Bu Üreticiyi Nasıl Kullanılır
- "CPF Üret" butonuna tıklayın
- Geçerli, rastgele bir CPF görüntülenecektir
- Üretilen CPF'yi test senaryolarınızda kullanmak için kopyalayabilirsiniz
Formül
Geçerli bir CPF oluşturma formülü aşağıdaki gibidir:
1def generate_cpf():
2 # 9 rastgele rakam oluştur
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # İlk kontrol rakamını hesapla
6 sum_1 = sum((10 - i) * digit for i, digit in enumerate(base_cpf))
7 check_digit_1 = (sum_1 * 10 % 11) % 10
8
9 # İkinci kontrol rakamını hesapla
10 sum_2 = sum((11 - i) * digit for i, digit in enumerate(base_cpf + [check_digit_1]))
11 check_digit_2 = (sum_2 * 10 % 11) % 10
12
13 return base_cpf + [check_digit_1, check_digit_2]
14
Hesaplama
Üretici aşağıdaki adımları gerçekleştirir:
- 9 rastgele rakam oluştur
- Yukarıda açıklanan algoritmayı kullanarak ilk kontrol rakamını hesapla
- İkinci kontrol rakamını hesapla
- Tüm rakamları birleştirerek tam CPF'yi oluştur
Örnekler
İşte üretilen bazı CPF örnekleri:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Kullanım Senaryoları
CPF üretici, çeşitli yazılım geliştirme ve test senaryolarında faydalıdır:
- Veritabanı Testi: Test veritabanlarını geçerli CPF numaralarıyla doldurmak
- Form Doğrulama: Brezilyalı kullanıcı kayıt formlarının giriş doğrulamasını test etmek
- API Testi: Geçerli Brezilya kimlik bilgileri gerektiren API isteklerinde üretilen CPFlere kullanmak
- Performans Testi: Yük testi için benzersiz, geçerli CPFlere büyük setler oluşturmak
- UI/UX Testi: Kullanıcı arayüzlerinde CPF numaralarının doğru formatlanmasını ve görüntülenmesini sağlamak
Alternatifler
Brezilya'daki ana bireysel tanımlayıcı CPF olsa da, belirli bağlamlarda kullanılabilecek diğer tanımlayıcılar vardır:
- RG (Registro Geral): Eyalet tarafından verilen kimlik belgesi
- CNPJ (Cadastro Nacional da Pessoa Jurídica): İşletmeler ve tüzel kişiler için kullanılır
- PIS/PASEP: İstihdamla ilgili amaçlar için kullanılır
Tarih
CPF, Brezilya'da 1965 yılında ülkenin vergi sistemini modernize etme çabalarının bir parçası olarak tanıtılmıştır. Başlangıçta, esas olarak gelir vergisi amaçları için kullanılmıştır, ancak zamanla kullanımı Brezilya bürokrasisi ve ticaretinin çeşitli diğer alanlarına yayılmıştır.
CPF tarihindeki önemli dönüm noktaları:
- 1965: Bireyler için CPF tanıtıldı
- 1972: CPF, tüm vergi mükellefi bireyler için zorunlu hale geldi
- 1990'lar: CPF, ticari ve finansal işlemlerde daha yaygın olarak kullanılmaya başlandı
- 2000'ler: Dijital sistemler CPF'yi Brezilya'daki günlük yaşamda daha fazla entegre etti
Bugün, CPF, Brezilya vatandaşlarının ve sakinlerinin devlet hizmetleri, finansal kurumlar ve birçok ticari işlemle etkileşimlerinde önemli bir parçadır.
Kod Örnekleri
İşte çeşitli programlama dillerinde CPF oluşturma ve doğrulama için kod parçaları:
1import random
2
3def generate_cpf():
4 cpf = [random.randint(0, 9) for _ in range(9)]
5 for _ in range(2):
6 value = sum((cpf[num] * ((len(cpf) + 1) - num) for num in range(len(cpf)))) % 11
7 cpf.append(11 - value if value > 1 else 0)
8 return ''.join(map(str, cpf))
9
10def validate_cpf(cpf):
11 numbers = [int(digit) for digit in cpf if digit.isdigit()]
12 if len(numbers) != 11 or len(set(numbers)) == 1:
13 return False
14 for i in range(9, 11):
15 value = sum((numbers[num] * ((i + 1) - num) for num in range(i))) % 11
16 if numbers[i] != (11 - value if value > 1 else 0):
17 return False
18 return True
19
20## Örnek kullanım
21cpf = generate_cpf()
22print(f"Üretilen CPF: {cpf}")
23print(f"Geçerli mi: {validate_cpf(cpf)}")
24
1function generateCPF() {
2 const cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 10));
3 for (let i = 0; i < 2; i++) {
4 let sum = cpf.reduce((acc, cur, idx) => acc + cur * (cpf.length + 1 - idx), 0);
5 let digit = 11 - (sum % 11);
6 cpf.push(digit > 9 ? 0 : digit);
7 }
8 return cpf.join('');
9}
10
11function validateCPF(cpf) {
12 const numbers = cpf.match(/\d/g).map(Number);
13 if (numbers.length !== 11 || new Set(numbers).size === 1) return false;
14 for (let i = 9; i < 11; i++) {
15 let sum = numbers.slice(0, i).reduce((acc, cur, idx) => acc + cur * (i + 1 - idx), 0);
16 let digit = 11 - (sum % 11);
17 if (numbers[i] !== (digit > 9 ? 0 : digit)) return false;
18 }
19 return true;
20}
21
22// Örnek kullanım
23const cpf = generateCPF();
24console.log(`Üretilen CPF: ${cpf}`);
25console.log(`Geçerli mi: ${validateCPF(cpf)}`);
26
1import java.util.Random;
2
3public class CPFGenerator {
4 private static final Random random = new Random();
5
6 public static String generateCPF() {
7 int[] cpf = new int[11];
8 for (int i = 0; i < 9; i++) {
9 cpf[i] = random.nextInt(10);
10 }
11 cpf[9] = calculateCheckDigit(cpf, 10);
12 cpf[10] = calculateCheckDigit(cpf, 11);
13 return formatCPF(cpf);
14 }
15
16 private static int calculateCheckDigit(int[] cpf, int factor) {
17 int sum = 0;
18 for (int i = 0; i < factor - 1; i++) {
19 sum += cpf[i] * (factor - i);
20 }
21 int result = 11 - (sum % 11);
22 return result > 9 ? 0 : result;
23 }
24
25 private static String formatCPF(int[] cpf) {
26 return String.format("%d%d%d.%d%d%d.%d%d%d-%d%d",
27 cpf[0], cpf[1], cpf[2], cpf[3], cpf[4], cpf[5], cpf[6], cpf[7], cpf[8], cpf[9], cpf[10]);
28 }
29
30 public static boolean validateCPF(String cpf) {
31 cpf = cpf.replaceAll("[^0-9]", "");
32 if (cpf.length() != 11) return false;
33 int[] numbers = cpf.chars().map(Character::getNumericValue).toArray();
34 if (allEqual(numbers)) return false;
35 int digit10 = calculateCheckDigit(numbers, 10);
36 int digit11 = calculateCheckDigit(numbers, 11);
37 return numbers[9] == digit10 && numbers[10] == digit11;
38 }
39
40 private static boolean allEqual(int[] array) {
41 for (int i = 1; i < array.length; i++) {
42 if (array[i] != array[0]) return false;
43 }
44 return true;
45 }
46
47 public static void main(String[] args) {
48 String cpf = generateCPF();
49 System.out.println("Üretilen CPF: " + cpf);
50 System.out.println("Geçerli mi: " + validateCPF(cpf));
51 }
52}
53
Bu örnekler, Python, JavaScript ve Java'da CPF oluşturma ve doğrulama yöntemlerini göstermektedir. Bu işlevleri belirli ihtiyaçlarınıza uyarlayabilir veya CPF işlemlerine ihtiyaç duyan daha büyük sistemlere entegre edebilirsiniz.
Hukuki ve Etik Hususlar
Üretilen CPFlere kullanırken, aşağıdaki noktaları dikkate almak önemlidir:
- Üretilen CPFlere yalnızca test amaçları için kullanılmalı ve gerçek bireyleri taklit etmek veya herhangi bir dolandırıcılık faaliyetinde bulunmak için asla kullanılmamalıdır.
- Üretim verilerinin herhangi bir test verisi içeren etiketini açıkça belirtin, böylece gerçek kişisel verilerle karışıklık önlenir.
- Gerçek ve sahte kişisel tanımlayıcıları işlerken, yargı alanınızdaki veri koruma yasaları ve düzenlemeleri hakkında bilgi sahibi olun.
- Üretim ortamlarında, her zaman kullanıcılar veya yetkili kaynaklar tarafından sağlanan gerçek, doğrulanmış CPFlere kullanın.
- Sistemlerinizde hem gerçek hem de üretilen CPFlere karşı koruma sağlamak için uygun güvenlik önlemleri uygulayın.
Referanslar
- Receita Federal do Brasil. "CPF - Cadastro de Pessoas Físicas." https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf
- Serpro. "Validador de CPF." https://www.serpro.gov.br/links-fixos-superiores/validador-cpf
- Ministério da Fazenda. "CPF Tarihi." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembro de 1965. "Gelir vergisi yasasını değiştirir, çeşitli mali ve idari önlemleri benimser ve diğer hükümleri belirler."
Geri Bildirim
Bu araç hakkında geri bildirim vermeye başlamak için geri bildirim toast'una tıklayın
İlgili Araçlar
Çalışma akışınız için faydalı olabilecek daha fazla aracı keşfedin