مولد شماره شناسایی مالیاتی برزیل (CPF) - ایجاد شناسههای مالیاتی معتبر برای آزمایش
مولد رایگان CPF، شمارههای شناسایی مالیاتی برزیل را ایجاد میکند که از الگوریتمهای اعتبارسنجی عبور میکنند. مناسب برای آزمایش فرمها، APIها و پایگاه دادهها بدون استفاده از دادههای شخصی واقعی.
برای تولید یک شماره CPF برزیلی معتبر برای اهداف آزمایشی کلیک کنید
مستندات
مولد شماره شناسایی مالیاتی برزیل - ایجاد شمارههای شناسایی مالیاتی معتبر برای آزمایش
چرا به یک تولیدکننده CPF برای تست نیاز دارید
هنگام توسعه برنامههای کاربردی برای بازار برزیل، به سرعت با چالش رایجی مواجه میشوید: تست فرمها و منطق اعتبارسنجی بدون به خطر انداختن دادههای واقعی کاربر. در اینجا یک تولیدکننده CPF ضروری میشود.
CPF (Cadastro de Pessoas Físicas) یک شناسه منحصر به فرد 11 رقمی در برزیل است که برای شهروندان و ساکنان برای اهداف مالیاتی صادر میشود. این ابزار اعداد CPF تصادفی از نظر ریاضی ایجاد میکند که الگوریتم اعتبارسنجی رسمی برزیل را پاس میکنند - برای پر کردن پایگاه دادههای تست، اعتبارسنجی فرمهای ورودی و اجرای تستهای خودکار بدون نگرانی از حریم خصوصی.
محدودیت حیاتی: CPFهای تولید شده فقط برای محیطهای تست هستند. آنها با افراد واقعی مرتبط نیستند و هرگز نباید در سیستمهای تولید یا برای اهداف متقلبانه استفاده شوند. آنچه آنها را ارزشمند میکند این است که از بررسیهای اعتبارسنجی عبور میکنند در حالی که دادههای تست شما کاملاً از اطلاعات شخصی واقعی جدا میمانند.
درک ساختار و فرمت CPF
یک CPF معتبر شامل ۱۱ رقم با ساختار خاص است:
- ۹ رقم اول: شمارههای شناسایی پایه
- ۲ رقم آخر: ارقام کنترلی برای اعتبارسنجی
- فرمت استاندارد: XXX.XXX.XXX-XX (با نقطه و خط تیره)
مثال: ۱۲۳.۴۵۶.۷۸۹-۰۹
ارقام کنترلی اطمینان میدهند که شماره CPF از نظر ریاضی معتبر است و از ورود اشتباه و شمارههای نامعتبر در سیستمهای برزیل جلوگیری میکنند.
نحوه اعتبارسنجی CPF
الگوریتم اعتبارسنجی CPF از سیستم رقم کنترلی وزنی مدولو-11 برای تضمین یکپارچگی عدد استفاده میکند. درک این الگوریتم هنگام پیادهسازی اعتبارسنجی CPF در برنامههای خود بسیار مهم است.
توضیح فرآیند اعتبارسنجی
الگوریتم دو رقم کنترلی (دو رقم آخر CPF) را بر اساس نه رقم اول محاسبه میکند:
محاسبه رقم کنترلی اول:
- ضرب اولین 9 رقم در اوزان نزولی (10، 9، 8، 7، 6، 5، 4، 3، 2)
- جمع تمام نتایج ضرب
- محاسبه باقیمانده هنگام تقسیم بر 11
- اگر باقیمانده < 2 باشد، رقم کنترلی 0 است؛ در غیر این صورت 11 منهای باقیمانده است
محاسبه رقم کنترلی دوم:
- تکرار فرآیند برای اولین 9 رقم به علاوه رقم کنترلی اول (مجموعاً 10 رقم)
- استفاده از اوزان 11، 10، 9، 8، 7، 6، 5، 4، 3، 2
- اعمال منطق باقیمانده مشابه
این اعتبارسنجی دو مرحلهای اکثر خطاهای رونویسی را شناسایی میکند و از تأیید اعداد تصادفی به عنوان CPF معتبر جلوگیری میکند. این الگوریتم در Lei nº 4.862/1965 مستند شده است که سیستم CPF را ایجاد کرد.
چرا این برای توسعهدهندگان مهم است
هنگام ساخت اعتبارسنجی CPF، اغلب توسعهدهندگان مورد حاشیهای که باقیمانده 0 یا 1 است را از دست میدهند - این موارد باید به رقم کنترلی 0 نگاشت شوند، نه 10 یا 11. این یک منبع رایج از باگهای اعتبارسنجی است. فرمول (sum * 10 % 11) % 10 این مورد حاشیهای را به طور شفاف حل میکند و اطمینان میدهد که نتیجه هرگز از 9 تجاوز نمیکند.
نحوه استفاده از ابزار تولید کننده CPF
تولید CPF های آزمایشی معتبر تنها چند ثانیه طول میکشد:
- کلیک روی دکمه "تولید CPF"
- مشاهده شماره CPF تصادفی معتبر در فرمت استاندارد XXX.XXX.XXX-XX
- کپی کردن شماره تولید شده با یک کلیک
- چسباندن مستقیم در فرمهای آزمایشی، درخواستهای API یا بذرهای پایگاه داده
هر 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 تولید شده نیاز خواهید داشت:
سناریوهای توسعه و تست
بذر دادهها و مهاجرتها: هنگام راهاندازی محیطهای محلی یا مرحلهای، به دادههای تستی واقعگرایانه نیاز دارید. CPFهای تولید شده به شما امکان ایجاد صدها یا هزاران رکورد کاربر تستی بدون استفاده از اطلاعات شخصی واقعی را میدهند. این موضوع بهویژه هنگام تست محدودیتهای پایگاه داده و شاخصهای یکتا در ستونهای CPF مفید است.
تست اعتبارسنجی فرم: فرمهای ثبتنام برزیلی معمولاً نیاز به اعتبارسنجی CPF در سمت کلاینت و سرور دارند. تست موارد حاشیهای - مانند CPFهای با فرمت صحیح اما نامعتبر، یا ارقام یکسان (111.111.111-11) - به شناسایی باگهای اعتبارسنجی قبل از رسیدن به محیط تولید کمک میکند. CPFهای تولید شده موارد تستی معتبری را برای تأیید منطق اعتبارسنجی شما فراهم میکنند.
تست یکپارچگی API: هنگام ساخت یکپارچگی با درگاههای پرداخت برزیلی، خدمات مالی یا APIهای دولتی، اغلب به اعداد CPF معتبر در درخواستهای تستی خود نیاز خواهید داشت. استفاده از CPFهای تولید شده، مجموعه تست شما را از دادههای کاربری واقعی مستقل نگه میدارد.
تست بار و عملکرد: برای تست فشار سیستمهایی که دادههای کاربری برزیلی را پردازش میکنند، به حجم بزرگی از CPFهای یکتا و معتبر نیاز دارید. تولید هزاران CPF تستی به شما امکان شبیهسازی بار واقعی بدون نگرانیهای حریم خصوصی را میدهد.
اعتبارسنجی رابط کاربری: تست نحوه نمایش، ماسک و قالببندی CPF در اندازهها و زمینههای مختلف صفحه. CPFهای تولید شده به تأیید اینکه منطق قالببندی شما (افزودن نقطه و خط تیره) به طور مداوم کار میکند، کمک میکنند.
دامهای رایج برای اجتناب
اشتباهی که توسعهدهندگان اغلب مرتکب میشوند، فراموش کردن این نکته است که ارقام یکسان (مانند 000.000.000-00 یا 111.111.111-11) از نظر الگوریتم فنی معتبر هستند اما توسط سیستمهای برزیلی واقعی رد میشوند. هنگام تست، بررسیهایی برای این الگوهای شناخته شده نامعتبر حتی در صورت تأیید ریاضی انجام دهید.
مشکل دیگر: CPFهای تولید شده برای تست منطق اعتبارسنجی عالی هستند، اما در تست جستجوی واقعی CPF در پایگاه دادههای دولتی کمکی نمیکنند. برای تستهای یکپارچگی که APIهای دولتی برزیل را جستجو میکنند، به CPFهای تستی اختصاصی ارائه شده توسط آن خدمات (مانند محیط تستی Serpro) نیاز خواهید داشت.
(ترجمه ادامه دارد...)
مثال استفاده
cpf = generate_cpf() print(f"CPF تولید شده: {cpf}") print(f"معتبر است: {validate_cpf(cpf)}")
1
2javascript function generateCPF() { const cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 10)); for (let i = 0; i < 2; i++) { let sum = cpf.reduce((acc, cur, idx) => acc + cur * (cpf.length + 1 - idx), 0); let digit = 11 - (sum % 11); cpf.push(digit > 9 ? 0 : digit); } return cpf.join(''); }
function validateCPF(cpf) { const numbers = cpf.match(/\d/g).map(Number); if (numbers.length !== 11 || new Set(numbers).size === 1) return false; for (let i = 9; i < 11; i++) { let sum = numbers.slice(0, i).reduce((acc, cur, idx) => acc + cur * (i + 1 - idx), 0); let digit = 11 - (sum % 11); if (numbers[i] !== (digit > 9 ? 0 : digit)) return false; } return true; }
// مثال استفاده
const cpf = generateCPF();
console.log(CPF تولید شده: ${cpf});
console.log(معتبر است: ${validateCPF(cpf)});
1
2java import java.util.Random;
public class CPFGenerator { private static final Random random = new Random();
public static String generateCPF() {
int[] cpf = new int[11];
for (int i = 0; i < 9; i++) {
cpf[i] = random.nextInt(10);
}
cpf[9] = calculateCheckDigit(cpf, 10);
cpf[10] = calculateCheckDigit(cpf, 11);
return formatCPF(cpf);
}
private static int calculateCheckDigit(int[] cpf, int factor) {
int sum = 0;
for (int i = 0; i < factor - 1; i++) {
sum += cpf[i] * (factor - i);
}
int result = 11 - (sum % 11);
return result > 9 ? 0 : result;
}
private static String formatCPF(int[] cpf) {
return String.format("%d%d%d.%d%d%d.%d%d%d-%d%d",
cpf[0], cpf[1], cpf[2], cpf[3], cpf[4], cpf[5], cpf[6], cpf[7], cpf[8], cpf[9], cpf[10]);
}
public static boolean validateCPF(String cpf) {
cpf = cpf.replaceAll("[^0-9]", "");
if (cpf.length() != 11) return false;
int[] numbers = cpf.chars().map(Character::getNumericValue).toArray();
if (allEqual(numbers)) return false;
int digit10 = calculateCheckDigit(numbers, 10);
int digit11 = calculateCheckDigit(numbers, 11);
return numbers[9] == digit10 && numbers[10] == digit11;
}
private static boolean allEqual(int[] array) {
for (int i = 1; i < array.length; i++) {
if (array[i] != array[0]) return false;
}
return true;
}
public static void main(String[] args) {
String cpf = generateCPF();
System.out.println("CPF تولید شده: " + cpf);
System.out.println("معتبر است: " + validateCPF(cpf));
}
}
**استفاده از این پیادهسازیها:**
- توابع اعتبارسنجی هم ورودی با فرمت (XXX.XXX.XXX-XX) و هم بدون فرمت (XXXXXXXXXXX) را پشتیبانی میکنند
- در کد تولید، الگوهای شناختهشده نامعتبر (ارقام یکسان) را بررسی کنید
- برای سیستمهای تولیدی، استفاده از کتابخانههای تخصصی مانند `validate-docbr` (پایتون) یا `cpf-cnpj-validator` (جاوااسکریپت) را در نظر بگیرید - آنها موارد حاشیهای را پوشش میدهند و به خوبی آزمایش شدهاند
- این مثالها برای درک الگوریتم یا ساخت پیادهسازیهای سبک بدون وابستگیهای خارجی عالی هستند
## سؤالات متداول درباره تولید CPF
### آیا تولیدکننده CPF رایگان است؟
بله، این ابزار کاملاً رایگان و بدون نیاز به ثبتنام است. میتوانید به تعداد دلخواه برای اهداف تست، شمارههای CPF تولید کنید. هیچ محدودیت استفاده یا هزینه پنهانی وجود ندارد.
### آیا شمارههای CPF تولیدی با افراد واقعی مرتبط هستند؟
خیر. اگرچه این شمارهها از نظر ریاضی معتبر و از الگوریتم اعتبارسنجی عبور میکنند، اما به صورت تصادفی تولید شده و در سیستم رسمی Receita Federal برزیل ثبت نشدهاند. آنها صرفاً برای دادههای تستی وجود دارند و فقط باید در محیطهای توسعه و تست استفاده شوند.
### آیا میتوانم از CPFهای تولیدی در سیستمهای تولیدی استفاده کنم؟
هرگز. سیستمهای تولیدی باید از CPFهای واقعی و تأیید شده که توسط کاربران از طریق فرآیندهای ثبتنام مشروع ارائه میشوند، استفاده کنند. استفاده از CPFهای تولیدی در سیستمهای زنده، اصول یکپارچگی داده را نقض میکند و میتواند مشکلات قانونی جدی تحت [قانون حفاظت از داده برزیل (LGPD)](https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd) ایجاد کند.
### تولیدکننده چگونه اعتبار CPF را تضمین میکند؟
این ابزار الگوریتم اعتبارسنجی رسمی CPF را همانطور که توسط Receita Federal مشخص شده است، اجرا میکند. هر دو رقم کنترل را با استفاده از فرمول وزنی مدولو-11 محاسبه میکند و اطمینان میدهد که هر شماره تولیدی از آزمونهای اعتبارسنجی استاندارد عبور میکند. این الگوریتم همان است که توسط سیستمهای دولتی برزیل و مؤسسات مالی استفاده میشود.
### تفاوت CPF و CNPJ چیست؟
CPF (Cadastro de Pessoas Físicas) افراد را شناسایی میکند - شهروندان و ساکنان. CNPJ (Cadastro Nacional da Pessoa Jurídica) کسب و کارها و نهادهای حقوقی را شناسایی میکند. CPF را میتوان مشابه شماره تأمین اجتماعی در آمریکا و CNPJ را مشابه شماره شناسایی کارفرما (EIN) در نظر گرفت. برای هر نوع، به تولیدکننده متفاوتی نیاز خواهید داشت.
### آیا تولید شمارههای CPF تست قانونی است؟
تولید شمارههای CPF برای آزمایش نرمافزار و توسعه مشروع قانونی است. آنچه غیرقانونی است، استفاده از آنها به صورت کلاهبردارانه است - برای جعل هویت افراد واقعی، سرقت هویت یا دور زدن اقدامات امنیتی. CPFهای تولیدی را به وضوح به عنوان دادههای تستی علامتگذاری کنید و آنها را به محیطهای غیر تولیدی محدود کنید.
### در مورد CPFهای تکراری چه میتوانید بگویید؟
اگرچه از نظر تئوری ممکن است، اما تکرارها بسیار نادر هستند. حدود 100 میلیارد ترکیب CPF معتبر وجود دارد (با در نظر گرفتن محدودیتهای رقم کنترل)، بنابراین احتمال تولید همان شماره دو بار حدود 1 در 100 میلیارد در هر تلاش است. در سناریوهای عملی تست، تکرارها مشکلساز نخواهند بود مگر اینکه صدها میلیون CPF تولید کنید.
### آیا CPFهای تولیدی با کتابخانههای اعتبارسنجی کار میکنند؟
بله. CPFهای تولیدی در کتابخانههای محبوب در زبانهای مختلف - `validate-docbr` در پایتون، `cpf-cnpj-validator` در جاوا اسکریپت، `geekcom/validator-docs` در PHP و دیگران - اعتبار دارند. آنها الزامات ریاضی که این کتابخانهها بررسی میکنند را برآورده میکنند. با این حال، در بررسیهای "جستجوی CPF واقعی" در پایگاه دادههای دولتی رد خواهند شد، که دقیقاً همان چیزی است که برای تست جداگانه میخواهید.
### چرا برخی CPFهای معتبر توسط اعتبارسنجی من رد میشوند؟
اعتبارسنجی شما ممکن است الگوهای نامعتبر شناخته شده فراتر از الگوریتم ریاضی را بررسی کند. برای مثال، CPFهایی با ارقام یکسان (000.000.000-00، 111.111.111-11 و غیره) از نظر ریاضی معتبر هستند اما توسط اکثر سیستمهای برزیلی به دلیل اینکه مقادیر تستی شناخته شده هستند، مسدود میشوند. منطق اعتبارسنجی خوب هم الگوریتم رقم کنترل و هم این رد الگو را شامل میشود.
## ملاحظات قانونی و اخلاقی
هنگام استفاده از **تولیدکننده CPF**، این دستورالعملهای مهم را رعایت کنید:
1. **فقط برای آزمایش:** CPFهای تولید شده صرفاً برای محیطهای توسعه و آزمایش هستند
2. **برچسبگذاری واضح:** تمام دادههای آزمایشی حاوی CPFهای تولید شده را برچسب بزنید تا از اشتباه با دادههای واقعی جلوگیری شود
3. **رعایت حریم خصوصی:** حتی هنگام کار با شناسههای جعلی، قوانین محافظت از دادهها (مانند LGPD در برزیل) را درک کنید
4. **سیستمهای تولیدی:** همیشه از CPFهای واقعی و تأیید شده از منابع مجاز در محیطهای زنده استفاده کنید
5. **اقدامات امنیتی:** محافظت مناسب را برای CPFهای واقعی و تولید شده در سیستمهای خود اجرا کنید
6. **عدم جعل هویت:** هرگز از اعداد تولید شده برای جعل هویت افراد واقعی یا ارتکاب کلاهبرداری استفاده نکنید
## استفاده از CPFهای تولید شده در مجموعه تست خود
برای توسعهدهندگانی که روی برنامههای برزیلی کار میکنند، داشتن دادههای تست قابل اعتماد غیرقابل چشمپوشی است. این تولیدکننده CPF، اعداد ریاضی معتبری را ارائه میدهد که از بررسیهای اعتبارسنجی عبور میکنند و در عین حال تست شما را کاملاً از دادههای کاربران واقعی جدا نگه میدارد.
نکات کلیدی زیر را هنگام ادغام CPFهای تولید شده در گردش کار خود به خاطر داشته باشید:
- **دادههای تست را به وضوح مشخص کنید** در اسکیماهای پایگاه داده و مستندات خود
- **الگوهای بررسی** برای CPFهای شناخته شده نامعتبر (ارقام یکسان) در اعتبارسنجی خود پیادهسازی کنید
- **از CPFهای تولید شده فقط در محیطهای غیر از تولید استفاده کنید**—مرحلهبندی، توسعه و خط لوله CI/CD
- **به مشخصات اعتبارسنجی رسمی** از [Receita Federal](https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf) مراجعه کنید هنگام ساخت منطق اعتبارسنجی خود
روی دکمه تولید در بالا کلیک کنید تا CPFهای معتبر برای نیازهای تست خود ایجاد کنید.
## مراجع و مستندات رسمی
برای اطلاعات معتبر درباره استانداردهای CPF و مقررات دادههای برزیل:
1. **رسیته فدرال برزیل.** "CPF - ثبت اشخاص حقیقی." مستندات رسمی الزامات و اعتبارسنجی CPF. [https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf](https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf)
2. **سرپرو (سرویس پردازش داده فدرال).** "اعتبارسنج CPF." سرویس اعتبارسنجی CPF دولتی با محیط آزمایشی. [https://www.serpro.gov.br/links-fixos-superiores/validador-cpf](https://www.serpro.gov.br/links-fixos-superiores/validador-cpf)
3. **قانون کلی حفاظت از داده (LGPD).** "قانون برزیلی حفاظت از دادههای شخصی." چارچوب حقوقی حاکم بر مدیریت دادههای شخصی در برزیل. [https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd](https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd)
4. **قانون شماره 4.862/1965.** "اصلاح قوانین مالیات بر درآمد." قانون اولیه تأسیس سیستم CPF. [https://www.planalto.gov.br/ccivil_03/leis/l4862.htm](https://www.planalto.gov.br/ccivil_03/leis/l4862.htm)
5. **وزارت دارایی.** "تاریخ CPF." زمینه تاریخی و تکامل سیستم CPF. [https://www.gov.br/fazenda/pt-br/assuntos/receita-federal](https://www.gov.br/fazenda/pt-br/assuntos/receita-federal)
---
**عنوان متا:** تولیدکننده CPF - ایجاد شناسههای مالیاتی برزیلی معتبر برای آزمایش
**توضیحات متا:** تولیدکننده CPF رایگان که شمارههای شناسه مالیاتی برزیلی معتبر ایجاد میکند که از الگوریتمهای اعتبارسنجی عبور میکنند. مناسب برای آزمایش فرمها، APIها و پایگاه دادهها بدون استفاده از دادههای شخصی واقعی.