تولید کننده شماره CPF معتبر برای آزمایشهای مختلف
شمارههای CPF (Cadastro de Pessoas Físicas) معتبر و تصادفی را برای اهداف آزمایشی تولید کنید. این ابزار CPFs را ایجاد میکند که با فرمت و قوانین اعتبارسنجی رسمی برزیل مطابقت دارد و از هیچ اطلاعات شخصی واقعی استفاده نمیکند.
title
مستندات
تولید کننده CPF
مقدمه
CPF (Cadastro de Pessoas Físicas) یک شناسه منحصر به فرد است که به شهروندان و ساکنان برزیل برای مقاصد مالیاتی اختصاص داده میشود. این تولید کننده شمارههای CPF تصادفی و معتبر برای مقاصد آزمایشی ایجاد میکند. مهم است که توجه داشته باشید که این CPF های تولید شده به افراد واقعی مرتبط نیستند و باید فقط در محیطهای آزمایشی استفاده شوند.
ساختار یک CPF
یک CPF از 11 رقم تشکیل شده است:
- 9 رقم اول اعداد پایه هستند
- 2 رقم آخر ارقام چک هستند
فرمت معمولاً به صورت زیر نمایش داده میشود: XXX.XXX.XXX-XX
الگوریتم اعتبارسنجی CPF
الگوریتم اعتبارسنجی CPF اطمینان حاصل میکند که شماره معتبر است. اینجا نحوه کار آن آمده است:
- 9 رقم اول را با وزنها (10 تا 2) ضرب کنید
- نتایج را جمع کنید
- باقیمانده جمع را بر 11 تقسیم کنید
- اگر باقیمانده کمتر از 2 باشد، رقم چک اول 0 است؛ در غیر این صورت، 11 منهای باقیمانده است
- این فرآیند را برای 10 رقم اول (شامل اولین رقم چک) با وزنهای 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 کامل تشکیل شود
مثالها
در اینجا چند مثال از CPF های تولید شده آورده شده است:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
موارد استفاده
تولید کننده CPF در سناریوهای مختلف توسعه نرمافزار و آزمایش مفید است:
- آزمایش پایگاه داده: پر کردن پایگاههای داده آزمایشی با شمارههای CPF معتبر
- اعتبارسنجی فرم: آزمایش اعتبارسنجی ورودی برای فرمهای ثبتنام کاربر برزیلی
- آزمایش API: استفاده از CPF های تولید شده در درخواستهای API که نیاز به شناسایی معتبر برزیلی دارند
- آزمایش عملکرد: تولید مجموعههای بزرگ از CPF های منحصر به فرد و معتبر برای آزمایش بار
- آزمایش UI/UX: اطمینان از قالببندی و نمایش صحیح شمارههای CPF در رابطهای کاربری
جایگزینها
در حالی که CPF شناسه اصلی فردی در برزیل است، شناسههای دیگری نیز وجود دارند که ممکن است در زمینههای خاص استفاده شوند:
- RG (Registro Geral): یک سند هویتی صادر شده توسط ایالت
- CNPJ (Cadastro Nacional da Pessoa Jurídica): برای کسبوکارها و نهادهای قانونی استفاده میشود
- PIS/PASEP: برای مقاصد مربوط به اشتغال استفاده میشود
تاریخچه
CPF در سال 1965 در برزیل معرفی شد به عنوان بخشی از تلاشهای گستردهتر برای مدرنسازی سیستم مالیاتی کشور. در ابتدا، این شماره عمدتاً برای مقاصد مالیاتی درآمد استفاده میشد، اما با گذشت زمان، استفاده آن به زمینههای مختلف دیگر بوروکراسی و تجارت برزیل گسترش یافت.
نقاط عطف کلیدی در تاریخ CPF:
- 1965: CPF برای افراد معرفی شد
- 1972: CPF برای همه افراد مالیاتدهنده الزامی شد
- 1990s: CPF به طور گستردهتری در معاملات تجاری و مالی استفاده میشود
- 2000s: سیستمهای دیجیتال 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 های تولید شده، مهم است که به نکات زیر توجه کنید:
- CPF های تولید شده فقط برای مقاصد آزمایشی هستند و هرگز نباید برای جعل هویت افراد واقعی یا هرگونه فعالیت تقلبی استفاده شوند.
- هرگونه داده آزمایشی حاوی CPF های تولید شده را به وضوح برچسبگذاری کنید تا از سردرگمی با دادههای شخصی واقعی جلوگیری شود.
- هنگام مدیریت حتی شناسههای شخصی جعلی، از قوانین و مقررات حفاظت از دادهها در حوزه قضایی خود آگاه باشید.
- در محیطهای تولید، همیشه از CPF های واقعی و تأیید شده که توسط کاربران یا منابع معتبر ارائه شدهاند، استفاده کنید.
- اقدامات امنیتی مناسب برای محافظت از CPF های واقعی و تولید شده در سیستمهای خود پیادهسازی کنید.
منابع
- 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. "Altera a legislação do impôsto de renda, adota diversas medidas de ordem fiscal e fazendária, e dá outras providências."
بازخورد
برای شروع دادن بازخورد درباره این ابزار، روی توست بازخورد کلیک کنید
ابزارهای مرتبط
کشف ابزارهای بیشتری که ممکن است برای جریان کاری شما مفید باشند