CPF Generator til testformål og datavalidering
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.
Generer CPF
Dokumentation
CPF Generator
Introduktion
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.
Struktur af en CPF
En CPF består af 11 cifre:
- De første 9 cifre er basisnumrene
- De sidste 2 cifre er kontrolcifre
Formatet repræsenteres typisk som: XXX.XXX.XXX-XX
CPF Valideringsalgoritme
CPF valideringsalgoritmen sikrer integriteten af nummeret. Sådan fungerer det:
- Multiplicer de første 9 cifre med vægte (10 til 2)
- Summer resultaterne
- Beregn resten af summen divideret med 11
- Hvis resten er mindre end 2, er det første kontrolciffer 0; ellers er det 11 minus resten
- Gentag processen for de første 10 cifre (inklusive det første kontrolciffer) med vægte 11 til 2
- Beregn det andet kontrolciffer ved hjælp af samme regel som det første
Sådan bruger du denne generator
- Klik på knappen "Generer CPF"
- Et gyldigt, tilfældigt CPF vises
- Du kan kopiere det genererede CPF til brug i dine testsituationer
Formel
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
Beregning
Generatoren udfører følgende trin:
- Generer 9 tilfældige cifre
- Beregn det første kontrolciffer ved hjælp af den beskrevne algoritme
- Beregn det andet kontrolciffer
- Kombiner alle cifre for at danne den komplette CPF
Eksempler
Her er nogle eksempler på genererede CPFer:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Anvendelsesscenarier
CPF-generatoren er nyttig i forskellige softwareudviklings- og testscenarier:
- Database Test: Udfyld testdatabaser med gyldige CPF-numre
- Formular Validering: Test inputvalidering for brasilianske brugerregistreringsformularer
- API Test: Brug genererede CPFer i API-anmodninger, der kræver gyldig brasiliansk identifikation
- Ydelsestest: Generer store sæt unikke, gyldige CPFer til belastningstest
- UI/UX Test: Sikre korrekt formatering og visning af CPF-numre i brugergrænseflader
Alternativer
Mens CPF er den primære individuelle identifikator i Brasilien, er der andre identifikatorer, der kan bruges i specifikke sammenhænge:
- RG (Registro Geral): Et statsligt udstedt identitetsdokument
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Bruges til virksomheder og juridiske enheder
- PIS/PASEP: Bruges til ansættelsesrelaterede formål
Historie
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:
- 1965: CPF introduceres for enkeltpersoner
- 1972: CPF bliver obligatorisk for alle skattebetalende enkeltpersoner
- 1990'erne: CPF begynder at blive brugt mere bredt i kommercielle og finansielle transaktioner
- 2000'erne: Digitale systemer integrerer yderligere CPF i dagliglivet i Brasilien
I dag er CPF en essentiel del af brasilianske borgeres og beboeres interaktioner med offentlige tjenester, finansielle institutioner og mange kommercielle transaktioner.
Kodeeksempler
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.
Juridiske og Etiske Overvejelser
Når du bruger genererede CPFer, er det vigtigt at holde følgende punkter i mente:
- Genererede CPFer er kun til testformål og bør aldrig bruges til at efterligne rigtige personer eller til svigagtige aktiviteter.
- Tydeligt mærk al testdata, der indeholder genererede CPFer for at undgå forvirring med rigtige persondata.
- Vær opmærksom på databeskyttelseslove og -regler i din jurisdiktion, når du håndterer selv falske personidentifikatorer.
- I produktionsmiljøer skal du altid bruge rigtige, verificerede CPFer givet af brugere eller autoriserede kilder.
- Implementer passende sikkerhedsforanstaltninger for at beskytte både rigtige og genererede CPFer i dine systemer.
Referencer
- Receita Federal do Brasil. "CPF - Cadastro de Pessoas Físicas." https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf
- Serpro. "Validador de CPF." https://www.serpro.gov.br/links-fixos-superiores/validador-cpf
- Ministério da Fazenda. "Historie om CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lov nr. 4.862, af 29. november 1965. "Ændrer lovgivningen om indkomstskat, vedtager forskellige foranstaltninger af skattemæssig og finansiel karakter og træffer andre foranstaltninger."
Feedback
Klik på feedback toasten for at begynde at give feedback om dette værktøj
Relaterede værktøjer
Opdag flere værktøjer, der kan være nyttige for dit workflow