Générez des numéros de CPF (Cadastro de Pessoas Físicas) valides et aléatoires à des fins de test. Cet outil crée des CPFs qui respectent le format officiel brésilien et les règles de validation, sans utiliser d'informations personnelles réelles.
Le CPF (Cadastro de Pessoas Físicas) est un identifiant unique attribué aux citoyens et résidents brésiliens à des fins fiscales. Ce générateur crée des numéros de CPF valides et aléatoires à des fins de test. Il est important de noter que ces CPFs générés ne sont pas associés à de vraies personnes et doivent uniquement être utilisés dans des environnements de test.
Un CPF se compose de 11 chiffres :
Le format est généralement représenté comme : XXX.XXX.XXX-XX
L'algorithme de validation du CPF garantit l'intégrité du numéro. Voici comment cela fonctionne :
La formule pour générer un CPF valide est la suivante :
1def generate_cpf():
2 # Générer 9 chiffres aléatoires
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Calculer le premier chiffre de contrôle
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 # Calculer le deuxième chiffre de contrôle
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
Le générateur effectue les étapes suivantes :
Voici quelques exemples de CPFs générés :
Le générateur de CPF est utile dans divers scénarios de développement et de test de logiciels :
Bien que le CPF soit l'identifiant principal des individus au Brésil, il existe d'autres identifiants qui peuvent être utilisés dans des contextes spécifiques :
Le CPF a été introduit au Brésil en 1965 dans le cadre d'un effort plus large pour moderniser le système fiscal du pays. À l'origine, il était utilisé principalement à des fins d'impôt sur le revenu, mais au fil du temps, son utilisation s'est étendue à divers autres domaines de la bureaucratie et du commerce brésilien.
Principales étapes de l'histoire du CPF :
Aujourd'hui, le CPF est une partie essentielle des interactions des citoyens et résidents brésiliens avec les services gouvernementaux, les institutions financières et de nombreuses transactions commerciales.
Voici des extraits de code pour générer et valider des CPFs dans divers langages de programmation :
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## Exemple d'utilisation
21cpf = generate_cpf()
22print(f"CPF généré : {cpf}")
23print(f"Est valide : {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// Exemple d'utilisation
23const cpf = generateCPF();
24console.log(`CPF généré : ${cpf}`);
25console.log(`Est valide : ${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("CPF généré : " + cpf);
50 System.out.println("Est valide : " + validateCPF(cpf));
51 }
52}
53
Ces exemples démontrent comment générer et valider des CPFs en Python, JavaScript et Java. Vous pouvez adapter ces fonctions à vos besoins spécifiques ou les intégrer dans des systèmes plus larges nécessitant la gestion des CPF.
Lors de l'utilisation de CPFs générés, il est crucial de garder à l'esprit les points suivants :
Découvrez plus d'outils qui pourraient être utiles pour votre flux de travail