شمارههای CPF (Cadastro de Pessoas Físicas) معتبر و تصادفی را برای اهداف آزمایشی تولید کنید. این ابزار CPFs را ایجاد میکند که با فرمت و قوانین اعتبارسنجی رسمی برزیل مطابقت دارد و از هیچ اطلاعات شخصی واقعی استفاده نمیکند.
CPF (Cadastro de Pessoas Físicas) یک شناسه منحصر به فرد است که به شهروندان و ساکنان برزیل برای مقاصد مالیاتی اختصاص داده میشود. این تولید کننده شمارههای CPF تصادفی و معتبر برای مقاصد آزمایشی ایجاد میکند. مهم است که توجه داشته باشید که این 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
تولید کننده مراحل زیر را انجام میدهد:
در اینجا چند مثال از CPF های تولید شده آورده شده است:
تولید کننده CPF در سناریوهای مختلف توسعه نرمافزار و آزمایش مفید است:
در حالی که CPF شناسه اصلی فردی در برزیل است، شناسههای دیگری نیز وجود دارند که ممکن است در زمینههای خاص استفاده شوند:
CPF در سال 1965 در برزیل معرفی شد به عنوان بخشی از تلاشهای گستردهتر برای مدرنسازی سیستم مالیاتی کشور. در ابتدا، این شماره عمدتاً برای مقاصد مالیاتی درآمد استفاده میشد، اما با گذشت زمان، استفاده آن به زمینههای مختلف دیگر بوروکراسی و تجارت برزیل گسترش یافت.
نقاط عطف کلیدی در تاریخ CPF:
امروز، CPF بخشی اساسی از تعاملات شهروندان و ساکنان برزیل با خدمات دولتی، نهادهای مالی و بسیاری از معاملات تجاری است.
در اینجا کدهای نمونه برای تولید و اعتبارسنجی CPF در زبانهای برنامهنویسی مختلف آورده شده است:
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
این مثالها نحوه تولید و اعتبارسنجی CPF را در زبانهای برنامهنویسی Python، JavaScript و Java نشان میدهند. میتوانید این توابع را به نیازهای خاص خود تطبیق دهید یا آنها را در سیستمهای بزرگتری که نیاز به مدیریت CPF دارند، ادغام کنید.
هنگام استفاده از CPF های تولید شده، مهم است که به نکات زیر توجه کنید:
کشف ابزارهای بیشتری که ممکن است برای جریان کاری شما مفید باشند