Generați numere CPF (Cadastro de Pessoas Físicas) valide și aleatorii pentru scopuri de testare. Acest instrument creează CPFs care respectă formatul oficial brazilian și regulile de validare, fără a folosi informații personale reale.
CPF-ul (Cadastro de Pessoas Físicas) este un identificator unic atribuit cetățenilor și rezidenților brazilieni în scopuri fiscale. Acest generator creează numere CPF valide și aleatorii pentru scopuri de testare. Este important de menționat că aceste CPFs generate nu sunt asociate cu persoane reale și ar trebui folosite doar în medii de testare.
Un CPF constă din 11 cifre:
Formatul este de obicei reprezentat ca: XXX.XXX.XXX-XX
Algoritmul de validare a CPF-ului asigură integritatea numărului. Iată cum funcționează:
Formula pentru generarea unui CPF valid este următoarea:
1def generate_cpf():
2 # Generați 9 cifre aleatorii
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Calculați prima cifră de control
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 # Calculați a doua cifră de control
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
Generatorul efectuează următorii pași:
Iată câteva exemple de CPFs generate:
Generatorul CPF este util în diverse scenarii de dezvoltare software și testare:
Deși CPF-ul este principalul identificator individual în Brazilia, există alte identificatoare care pot fi folosite în contexte specifice:
CPF-ul a fost introdus în Brazilia în 1965 ca parte a unui efort mai amplu de modernizare a sistemului fiscal al țării. Inițial, a fost folosit în principal pentru scopuri de impozitare pe venit, dar de-a lungul timpului, utilizarea sa s-a extins în diverse alte domenii ale birocrației și comerțului brazilian.
Puncte cheie în istoria CPF-ului:
Astăzi, CPF-ul este o parte esențială a interacțiunilor cetățenilor și rezidenților brazilieni cu serviciile guvernamentale, instituțiile financiare și multe tranzacții comerciale.
Iată fragmente de cod pentru generarea și validarea CPFs în diferite limbaje de programare:
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## Exemplu de utilizare
21cpf = generate_cpf()
22print(f"CPF generat: {cpf}")
23print(f"Este valid: {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// Exemplu de utilizare
23const cpf = generateCPF();
24console.log(`CPF generat: ${cpf}`);
25console.log(`Este valid: ${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 generat: " + cpf);
50 System.out.println("Este valid: " + validateCPF(cpf));
51 }
52}
53
Aceste exemple demonstrează cum să generați și să validați CPFs în Python, JavaScript și Java. Puteți adapta aceste funcții la nevoile dvs. specifice sau le puteți integra în sisteme mai mari care necesită gestionarea CPF-ului.
Atunci când utilizați CPFs generate, este crucial să țineți cont de următoarele puncte:
Descoperiți mai multe instrumente care ar putea fi utile pentru fluxul dvs. de lucru