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.
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.
Een CPF bestaat uit 11 cijfers:
Het formaat wordt doorgaans weergegeven als: XXX.XXX.XXX-XX
Het CPF-validatie-algoritme zorgt voor de integriteit van het nummer. Hier is hoe het werkt:
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
De generator voert de volgende stappen uit:
Hier zijn enkele voorbeelden van gegenereerde CPFs:
De CPF-generator is nuttig in verschillende softwareontwikkelings- en testsituaties:
Hoewel de CPF de primaire individuele identificatie in Brazilië is, zijn er andere identificatoren die in specifieke contexten kunnen worden gebruikt:
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:
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.
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.
Bij het gebruik van gegenereerde CPFs is het cruciaal om de volgende punten in gedachten te houden:
Ontdek meer tools die handig kunnen zijn voor uw workflow