Ustvarite veljavne, naključne številke CPF (Cadastro de Pessoas Físicas) za testne namene. Ta orodja ustvarjajo CPFe, ki ustrezajo uradnemu brazilskemu formatu in pravilom validacije, brez uporabe kakršnih koli pravih osebnih informacij.
CPF (Cadastro de Pessoas Físicas) je edinstven identifikator, dodeljen brazilskim državljanom in prebivalcem za davčne namene. Ta generator ustvarja veljavne, naključne številke CPF za testne namene. Pomembno je omeniti, da te generirane številke CPF niso povezane z resničnimi posamezniki in jih je mogoče uporabljati le v testnih okoljih.
CPF se sestavlja iz 11 številk:
Oblika je običajno predstavljena kot: XXX.XXX.XXX-XX
Algoritem za validacijo CPF zagotavlja celovitost številke. Tukaj je, kako deluje:
Formula za generiranje veljavnega CPF je naslednja:
1def generate_cpf():
2 # Ustvari 9 naključnih številk
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Izračunaj prvo kontrolno številko
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 # Izračunaj drugo kontrolno številko
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
Generator izvede naslednje korake:
Tukaj je nekaj primerov generiranih CPF-jev:
Generator CPF je koristen v različnih scenarijih razvoja programske opreme in testiranja:
Medtem ko je CPF glavni identifikator posameznikov v Braziliji, obstajajo drugi identifikatorji, ki se lahko uporabljajo v specifičnih kontekstih:
CPF je bil uveden v Braziliji leta 1965 kot del širšega prizadevanja za modernizacijo davčnega sistema države. Sprva je bil uporabljen predvsem za davčne namene, vendar se je njegova uporaba sčasoma razširila na različna druga področja brazilskega birokratskega in trgovinskega sistema.
Ključni mejniki v zgodovini CPF:
Danes je CPF bistven del interakcij brazilskih državljanov in prebivalcev z vladnimi storitvami, finančnimi institucijami in številnimi komercialnimi transakcijami.
Tukaj so primeri kode za generiranje in validacijo CPF-jev v različnih programskih jezikih:
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## Primer uporabe
21cpf = generate_cpf()
22print(f"Generiran CPF: {cpf}")
23print(f"Je veljaven: {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// Primer uporabe
23const cpf = generateCPF();
24console.log(`Generiran CPF: ${cpf}`);
25console.log(`Je veljaven: ${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("Generiran CPF: " + cpf);
50 System.out.println("Je veljaven: " + validateCPF(cpf));
51 }
52}
53
Ti primeri prikazujejo, kako generirati in validirati CPF-je v Pythonu, JavaScriptu in Javi. Te funkcije lahko prilagodite svojim specifičnim potrebam ali jih integrirate v večje sisteme, ki zahtevajo obravnavo CPF.
Ko uporabljate generirane CPF-je, je ključnega pomena, da upoštevate naslednje točke:
Odkrijte več orodij, ki bi lahko bila koristna za vaš delovni proces