CPF-generator voor het genereren van testgegevens
Genereer geldige, willekeurige CPF (Cadastro de Pessoas Físicas) nummers voor testdoeleinden. Deze tool maakt CPF's die voldoen aan het officiële Braziliaanse formaat en validatieregels, zonder gebruik te maken van echte persoonlijke informatie.
Genereer CPF
Documentatie
CPF Generator
Inleiding
De CPF (Cadastro de Pessoas Físicas) is een unieke identificatie die aan Braziliaanse burgers en bewoners wordt toegewezen voor belastingdoeleinden. Deze generator creëert geldige, willekeurige CPF-nummers voor testdoeleinden. Het is belangrijk op te merken dat deze gegenereerde CPFs niet zijn gekoppeld aan echte individuen en alleen in testomgevingen mogen worden gebruikt.
Structuur van een CPF
Een CPF bestaat uit 11 cijfers:
- De eerste 9 cijfers zijn de basisnummers
- De laatste 2 cijfers zijn controlecijfers
Het formaat wordt doorgaans weergegeven als: XXX.XXX.XXX-XX
CPF Validatie-algoritme
Het CPF-validatie-algoritme zorgt voor de integriteit van het nummer. Hier is hoe het werkt:
- Vermenigvuldig de eerste 9 cijfers met gewichten (10 tot 2)
- Tel de resultaten op
- Bereken de rest van de som gedeeld door 11
- Als de rest minder dan 2 is, is het eerste controlecijfer 0; anders is het 11 min de rest
- Herhaal het proces voor de eerste 10 cijfers (inclusief het eerste controlecijfer) met gewichten 11 tot 2
- Bereken het tweede controlecijfer met dezelfde regel als het eerste
Hoe deze generator te gebruiken
- Klik op de knop "Genereer CPF"
- Een geldig, willekeurig CPF wordt weergegeven
- Je kunt de gegenereerde CPF kopiëren voor gebruik in je testscenario's
Formule
De formule voor het genereren van een geldige CPF is als volgt:
1def generate_cpf():
2 # Genereer 9 willekeurige cijfers
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Bereken het eerste controlecijfer
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 # Bereken het tweede controlecijfer
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
Berekening
De generator voert de volgende stappen uit:
- Genereer 9 willekeurige cijfers
- Bereken het eerste controlecijfer met behulp van het hierboven beschreven algoritme
- Bereken het tweede controlecijfer
- Combineer alle cijfers om de volledige CPF te vormen
Voorbeelden
Hier zijn enkele voorbeelden van gegenereerde CPFs:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Toepassingen
De CPF-generator is nuttig in verschillende softwareontwikkelings- en testsituaties:
- Database Testing: Vul testdatabases met geldige CPF-nummers
- Formuliervalidatie: Test invoervalidatie voor Braziliaanse gebruikersregistratieformulieren
- API Testing: Gebruik gegenereerde CPFs in API-aanvragen die geldige Braziliaanse identificatie vereisen
- Prestatie Testing: Genereer grote sets unieke, geldige CPFs voor belastingtesten
- UI/UX Testing: Zorg voor de juiste opmaak en weergave van CPF-nummers in gebruikersinterfaces
Alternatieven
Hoewel de CPF de primaire individuele identificatie in Brazilië is, zijn er andere identificatoren die in specifieke contexten kunnen worden gebruikt:
- RG (Registro Geral): Een door de staat uitgegeven identiteitsdocument
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Gebruikt voor bedrijven en rechtspersonen
- PIS/PASEP: Gebruikt voor werkgerelateerde doeleinden
Geschiedenis
De CPF werd in 1965 in Brazilië geïntroduceerd als onderdeel van een bredere inspanning om het belastingstelsel van het land te moderniseren. Aanvankelijk werd het voornamelijk gebruikt voor inkomstenbelastingdoeleinden, maar in de loop der tijd breidde het gebruik zich uit naar verschillende andere gebieden van de Braziliaanse bureaucratie en handel.
Belangrijke mijlpalen in de geschiedenis van de CPF:
- 1965: CPF geïntroduceerd voor individuen
- 1972: CPF wordt verplicht voor alle belastingbetalende individuen
- 1990s: CPF begint breder te worden gebruikt in commerciële en financiële transacties
- 2000s: Digitale systemen integreren CPF verder in het dagelijks leven in Brazilië
Tegenwoordig is de CPF een essentieel onderdeel van de interacties van Braziliaanse burgers en bewoners met overheidsdiensten, financiële instellingen en veel commerciële transacties.
Code Voorbeelden
Hier zijn codefragmenten voor het genereren en valideren van CPFs in verschillende programmeertalen:
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## Voorbeeld gebruik
21cpf = generate_cpf()
22print(f"Gegenereerde CPF: {cpf}")
23print(f"Is geldig: {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// Voorbeeld gebruik
23const cpf = generateCPF();
24console.log(`Gegenereerde CPF: ${cpf}`);
25console.log(`Is geldig: ${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("Gegenereerde CPF: " + cpf);
50 System.out.println("Is geldig: " + validateCPF(cpf));
51 }
52}
53
Deze voorbeelden demonstreren hoe je CPFs kunt genereren en valideren in Python, JavaScript en Java. Je kunt deze functies aanpassen aan je specifieke behoeften of integreren in grotere systemen die CPF-verwerking vereisen.
Juridische en Ethische Overwegingen
Bij het gebruik van gegenereerde CPFs is het cruciaal om de volgende punten in gedachten te houden:
- Gegenereerde CPFs zijn uitsluitend voor testdoeleinden en mogen nooit worden gebruikt om echte individuen te imiteren of voor frauduleuze activiteiten.
- Label testgegevens die gegenereerde CPFs bevatten duidelijk om verwarring met echte persoonlijke gegevens te voorkomen.
- Wees je bewust van de wetten en voorschriften inzake gegevensbescherming in jouw rechtsgebied bij het omgaan met zelfs nep persoonlijke identificatoren.
- Gebruik in productieomgevingen altijd echte, geverifieerde CPFs die door gebruikers of geautoriseerde bronnen zijn verstrekt.
- Implementeer de juiste beveiligingsmaatregelen om zowel echte als gegenereerde CPFs in jouw systemen te beschermen.
Referenties
- 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. "Geschiedenis van de CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembro de 1965. "Wijzigingen in de wetgeving van de inkomstenbelasting, diverse fiscale en financiële maatregelen, en andere bepalingen."
Feedback
Klik op de feedback toast om feedback te geven over deze tool
Gerelateerde Tools
Ontdek meer tools die nuttig kunnen zijn voor jouw workflow