قم بإنشاء أرقام CPF (Cadastro de Pessoas Físicas) صالحة وعشوائية لأغراض الاختبار. هذه الأداة تنشئ CPFs التي تتوافق مع التنسيق الرسمي البرازيلي وقواعد التحقق، دون استخدام أي معلومات شخصية حقيقية.
الـ CPF (Cadastro de Pessoas Físicas) هو معرف فريد يُعطى للمواطنين والمقيمين البرازيليين لأغراض ضريبية. يقوم هذا المولد بإنشاء أرقام CPF صالحة وعشوائية لأغراض الاختبار. من المهم ملاحظة أن هذه الأرقام المولدة ليست مرتبطة بأفراد حقيقيين ويجب استخدامها فقط في بيئات الاختبار.
يتكون CPF من 11 رقمًا:
يتم تمثيل التنسيق عادةً على النحو التالي: XXX.XXX.XXX-XX
تضمن خوارزمية التحقق من CPF سلامة الرقم. إليك كيف تعمل:
الصيغة لتوليد CPF صالح هي كما يلي:
1def generate_cpf():
2 # توليد 9 أرقام عشوائية
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # حساب رقم التحقق الأول
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 # حساب رقم التحقق الثاني
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
يقوم المولد بتنفيذ الخطوات التالية:
إليك بعض الأمثلة على CPFs المولدة:
يكون مولد CPF مفيدًا في سيناريوهات تطوير البرمجيات والاختبار المختلفة:
بينما يعد CPF هو المعرف الفردي الرئيسي في البرازيل، هناك معرفات أخرى قد تُستخدم في سياقات معينة:
تم تقديم CPF في البرازيل في عام 1965 كجزء من جهد أوسع لتحديث نظام الضرائب في البلاد. في البداية، كان يُستخدم أساسًا لأغراض ضريبة الدخل، لكن استخدامه توسع بمرور الوقت ليشمل مجالات أخرى من البيروقراطية والتجارة البرازيلية.
المعالم الرئيسية في تاريخ CPF:
اليوم، يعد CPF جزءًا أساسيًا من تفاعلات المواطنين والمقيمين البرازيليين مع الخدمات الحكومية والمؤسسات المالية والعديد من المعاملات التجارية.
إليك مقتطفات من التعليمات البرمجية لتوليد والتحقق من CPFs في لغات برمجة مختلفة:
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## مثال على الاستخدام
21cpf = generate_cpf()
22print(f"تم توليد CPF: {cpf}")
23print(f"هل هو صالح: {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// مثال على الاستخدام
23const cpf = generateCPF();
24console.log(`تم توليد CPF: ${cpf}`);
25console.log(`هل هو صالح: ${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("تم توليد CPF: " + cpf);
50 System.out.println("هل هو صالح: " + validateCPF(cpf));
51 }
52}
53
تظهر هذه الأمثلة كيفية توليد والتحقق من CPFs في بايثون وجافا سكريبت وجافا. يمكنك تعديل هذه الوظائف لتناسب احتياجاتك المحددة أو دمجها في أنظمة أكبر تتطلب التعامل مع CPF.
عند استخدام CPFs المولدة، من الضروري مراعاة النقاط التالية:
اكتشف المزيد من الأدوات التي قد تكون مفيدة لسير عملك