Generera giltiga, slumpmässiga CPF (Cadastro de Pessoas Físicas) nummer för teständamål. Det här verktyget skapar CPF som följer det officiella brasilianska formatet och valideringsreglerna, utan att använda någon verklig personlig information.
CPF (Cadastro de Pessoas Físicas) är en unik identifierare som tilldelas brasilianska medborgare och invånare för skatteändamål. Denna generator skapar giltiga, slumpmässiga CPF-nummer för teständamål. Det är viktigt att notera att dessa genererade CPFn inte är kopplade till verkliga individer och endast bör användas i testmiljöer.
En CPF består av 11 siffror:
Formatet representeras vanligtvis som: XXX.XXX.XXX-XX
CPF-valideringsalgoritmen säkerställer integriteten hos numret. Så här fungerar det:
Formeln för att generera en giltig CPF är som följer:
1def generate_cpf():
2 # Generera 9 slumpmässiga siffror
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Beräkna första kontrollsiffran
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 # Beräkna andra kontrollsiffran
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
Generatorn utför följande steg:
Här är några exempel på genererade CPFn:
CPF-generatorn är användbar i olika programvaruutvecklings- och testscenarier:
Även om CPF är den primära individuella identifieraren i Brasilien, finns det andra identifierare som kan användas i specifika sammanhang:
CPF introducerades i Brasilien 1965 som en del av en bredare insats för att modernisera landets skattesystem. Ursprungligen användes det främst för inkomstskatteändamål, men med tiden utvidgades dess användning till olika andra områden inom brasiliansk byråkrati och handel.
Nyckelmilstolpar i CPF-historien:
Idag är CPF en viktig del av brasilianska medborgares och invånares interaktioner med statliga tjänster, finansiella institutioner och många kommersiella transaktioner.
Här är kodsnuttar för att generera och validera CPFn i olika programmeringsspråk:
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## Exempelanvändning
21cpf = generate_cpf()
22print(f"Genererad CPF: {cpf}")
23print(f"Är giltig: {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// Exempelanvändning
23const cpf = generateCPF();
24console.log(`Genererad CPF: ${cpf}`);
25console.log(`Är giltig: ${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("Genererad CPF: " + cpf);
50 System.out.println("Är giltig: " + validateCPF(cpf));
51 }
52}
53
Dessa exempel visar hur man genererar och validerar CPFn i Python, JavaScript och Java. Du kan anpassa dessa funktioner efter dina specifika behov eller integrera dem i större system som kräver CPF-hantering.
När du använder genererade CPFn är det avgörande att tänka på följande punkter:
Upptäck fler verktyg som kan vara användbara för din arbetsflöde