مولد CPF للاختبار - إنشاء أرقام CPF عشوائية صالحة
قم بإنشاء أرقام CPF (Cadastro de Pessoas Físicas) صالحة وعشوائية لأغراض الاختبار. هذه الأداة تنشئ CPFs التي تتوافق مع التنسيق الرسمي البرازيلي وقواعد التحقق، دون استخدام أي معلومات شخصية حقيقية.
إنشاء CPF
الوثائق
مولد CPF
مقدمة
الـ CPF (Cadastro de Pessoas Físicas) هو معرف فريد يُعطى للمواطنين والمقيمين البرازيليين لأغراض ضريبية. يقوم هذا المولد بإنشاء أرقام CPF صالحة وعشوائية لأغراض الاختبار. من المهم ملاحظة أن هذه الأرقام المولدة ليست مرتبطة بأفراد حقيقيين ويجب استخدامها فقط في بيئات الاختبار.
هيكل CPF
يتكون CPF من 11 رقمًا:
- الأرقام التسعة الأولى هي الأرقام الأساسية
- الرقمان الأخيران هما أرقام التحقق
يتم تمثيل التنسيق عادةً على النحو التالي: XXX.XXX.XXX-XX
خوارزمية التحقق من CPF
تضمن خوارزمية التحقق من CPF سلامة الرقم. إليك كيف تعمل:
- ضرب الأرقام التسعة الأولى بالأوزان (10 إلى 2)
- جمع النتائج
- حساب باقي المجموع مقسومًا على 11
- إذا كان الباقي أقل من 2، فإن رقم التحقق الأول هو 0؛ خلاف ذلك، يكون 11 ناقص الباقي
- تكرار العملية للأرقام العشرة الأولى (بما في ذلك رقم التحقق الأول) مع الأوزان 11 إلى 2
- حساب رقم التحقق الثاني باستخدام نفس القاعدة مثل الأول
كيفية استخدام هذا المولد
- انقر على زر "توليد CPF"
- سيتم عرض CPF عشوائي وصالح
- يمكنك نسخ 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
الحساب
يقوم المولد بتنفيذ الخطوات التالية:
- توليد 9 أرقام عشوائية
- حساب رقم التحقق الأول باستخدام الخوارزمية الموضحة أعلاه
- حساب رقم التحقق الثاني
- دمج جميع الأرقام لتشكيل CPF الكامل
أمثلة
إليك بعض الأمثلة على CPFs المولدة:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
حالات الاستخدام
يكون مولد CPF مفيدًا في سيناريوهات تطوير البرمجيات والاختبار المختلفة:
- اختبار قاعدة البيانات: ملء قواعد البيانات التجريبية بأرقام CPF صالحة
- التحقق من النموذج: اختبار التحقق من الإدخال لنماذج تسجيل المستخدمين البرازيلية
- اختبار واجهة برمجة التطبيقات: استخدام CPFs المولدة في طلبات واجهة برمجة التطبيقات التي تتطلب معرفات برازيلية صالحة
- اختبار الأداء: توليد مجموعات كبيرة من CPFs الفريدة والصالحة لاختبار التحميل
- اختبار واجهة المستخدم/تجربة المستخدم: ضمان التنسيق الصحيح وعرض أرقام CPF في واجهات المستخدم
البدائل
بينما يعد CPF هو المعرف الفردي الرئيسي في البرازيل، هناك معرفات أخرى قد تُستخدم في سياقات معينة:
- RG (Registro Geral): وثيقة هوية صادرة عن الدولة
- CNPJ (Cadastro Nacional da Pessoa Jurídica): يُستخدم للأعمال والكيانات القانونية
- PIS/PASEP: يُستخدم لأغراض تتعلق بالتوظيف
التاريخ
تم تقديم CPF في البرازيل في عام 1965 كجزء من جهد أوسع لتحديث نظام الضرائب في البلاد. في البداية، كان يُستخدم أساسًا لأغراض ضريبة الدخل، لكن استخدامه توسع بمرور الوقت ليشمل مجالات أخرى من البيروقراطية والتجارة البرازيلية.
المعالم الرئيسية في تاريخ CPF:
- 1965: تم تقديم CPF للأفراد
- 1972: يصبح CPF إلزاميًا لجميع الأفراد الذين يدفعون الضرائب
- التسعينيات: يبدأ استخدام CPF بشكل أوسع في المعاملات التجارية والمالية
- 2000s: تدمج الأنظمة الرقمية 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 المولدة، من الضروري مراعاة النقاط التالية:
- CPFs المولدة هي لأغراض الاختبار فقط ويجب ألا تُستخدم أبدًا لتقمص شخصية أفراد حقيقيين أو لأي أنشطة احتيالية.
- وضع علامة واضحة على أي بيانات اختبار تحتوي على CPFs المولدة لتجنب الخلط مع البيانات الشخصية الحقيقية.
- كن على دراية بقوانين حماية البيانات واللوائح في ولايتك القضائية عند التعامل حتى مع المعرفات الشخصية المزيفة.
- في بيئات الإنتاج، استخدم دائمًا CPFs حقيقية وموثقة مقدمة من المستخدمين أو مصادر موثوقة.
- تنفيذ تدابير أمان مناسبة لحماية كل من CPFs الحقيقية والمولدة في أنظمتك.
المراجع
- 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. "História do CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembro de 1965. "تعدل التشريعات المتعلقة بضريبة الدخل، وتتخذ تدابير متنوعة في المجال المالي، وتصدر أحكامًا أخرى."
الملاحظات
انقر على إشعار الملاحظات لبدء إعطاء ملاحظات حول هذه الأداة
أدوات ذات صلة
اكتشف المزيد من الأدوات التي قد تكون مفيدة لعملك