Generer gyldige, tilfældige CPF (Cadastro de Pessoas Físicas) numre til testformål. Dette værktøj opretter CPFer, der overholder det officielle brasilianske format og valideringsregler, uden at bruge nogen rigtige personlige oplysninger.
CPF (Cadastro de Pessoas Físicas) er en unik identifikator tildelt brasilianske borgere og beboere til skatteformål. Denne generator opretter gyldige, tilfældige CPF-numre til testformål. Det er vigtigt at bemærke, at disse genererede CPFer ikke er knyttet til rigtige personer og kun bør bruges i testmiljøer.
En CPF består af 11 cifre:
Formatet repræsenteres typisk som: XXX.XXX.XXX-XX
CPF valideringsalgoritmen sikrer integriteten af nummeret. Sådan fungerer det:
Formlen til at generere en gyldig CPF er som følger:
1def generate_cpf():
2 # Generer 9 tilfældige cifre
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Beregn første kontrolciffer
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 # Beregn andet kontrolciffer
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
Generatoren udfører følgende trin:
Her er nogle eksempler på genererede CPFer:
CPF-generatoren er nyttig i forskellige softwareudviklings- og testscenarier:
Mens CPF er den primære individuelle identifikator i Brasilien, er der andre identifikatorer, der kan bruges i specifikke sammenhænge:
CPF blev introduceret i Brasilien i 1965 som en del af en bredere indsats for at modernisere landets skattesystem. Oprindeligt blev det brugt primært til indkomstskatteformål, men over tid blev dets anvendelse udvidet til forskellige andre områder af brasiliansk bureaukrati og handel.
Nøglemilepæle i CPF-historien:
I dag er CPF en essentiel del af brasilianske borgeres og beboeres interaktioner med offentlige tjenester, finansielle institutioner og mange kommercielle transaktioner.
Her er kodeeksempler til at generere og validere CPFer i forskellige programmeringssprog:
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## Eksempel på brug
21cpf = generate_cpf()
22print(f"Genereret CPF: {cpf}")
23print(f"Er gyldig: {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// Eksempel på brug
23const cpf = generateCPF();
24console.log(`Genereret CPF: ${cpf}`);
25console.log(`Er gyldig: ${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("Genereret CPF: " + cpf);
50 System.out.println("Er gyldig: " + validateCPF(cpf));
51 }
52}
53
Disse eksempler demonstrerer, hvordan man genererer og validerer CPFer i Python, JavaScript og Java. Du kan tilpasse disse funktioner til dine specifikke behov eller integrere dem i større systemer, der kræver CPF-håndtering.
Når du bruger genererede CPFer, er det vigtigt at holde følgende punkter i mente:
Opdag flere værktøjer, der måske kan være nyttige for din arbejdsgang.