צור מספרי CPF (Cadastro de Pessoas Físicas) תקפים ורנדומליים למטרות בדיקה. כלי זה יוצר CPFs העומדים בפורמט וברגולציות הוולידציה הברזילאיות הרשמית, מבלי להשתמש במידע אישי אמיתי.
ה-CPF (Cadastro de Pessoas Físicas) הוא מזהה ייחודי המוקצה לאזרחים ותושבים ברזיל לצורכי מס. גנרטור זה יוצר מספרי CPF תקפים ורנדומליים למטרות בדיקה. חשוב לציין שה-CPFs שנוצרים אינם קשורים לאנשים אמיתיים ויש להשתמש בהם רק בסביבות בדיקה.
מספר 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 שנוצרים, חשוב לזכור את הנקודות הבאות:
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך