Genera números de CPF (Cadastro de Pessoas Físicas) válidos y aleatorios para fines de prueba. Esta herramienta crea CPFs que cumplen con el formato oficial brasileño y las reglas de validación, sin utilizar información personal real.
El CPF (Cadastro de Pessoas Físicas) es un identificador único asignado a ciudadanos y residentes brasileños para fines fiscales. Este generador crea números de CPF válidos y aleatorios para fines de prueba. Es importante señalar que estos CPFs generados no están asociados con individuos reales y solo deben usarse en entornos de prueba.
Un CPF consta de 11 dígitos:
El formato se representa típicamente como: XXX.XXX.XXX-XX
El algoritmo de validación de CPF asegura la integridad del número. Así es como funciona:
La fórmula para generar un CPF válido es la siguiente:
1def generate_cpf():
2 # Generar 9 dígitos aleatorios
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Calcular el primer dígito de verificación
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 # Calcular el segundo dígito de verificación
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
El generador realiza los siguientes pasos:
Aquí hay algunos ejemplos de CPFs generados:
El generador de CPF es útil en varios escenarios de desarrollo de software y pruebas:
Si bien el CPF es el principal identificador individual en Brasil, hay otros identificadores que pueden usarse en contextos específicos:
El CPF fue introducido en Brasil en 1965 como parte de un esfuerzo más amplio para modernizar el sistema fiscal del país. Inicialmente, se utilizó principalmente para fines de impuestos sobre la renta, pero con el tiempo, su uso se expandió a varias otras áreas de la burocracia y el comercio brasileños.
Hitos clave en la historia del CPF:
Hoy en día, el CPF es una parte esencial de las interacciones de los ciudadanos y residentes brasileños con los servicios gubernamentales, las instituciones financieras y muchas transacciones comerciales.
Aquí hay fragmentos de código para generar y validar CPFs en varios lenguajes de programación:
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## Ejemplo de uso
21cpf = generate_cpf()
22print(f"CPF Generado: {cpf}")
23print(f"Es válido: {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// Ejemplo de uso
23const cpf = generateCPF();
24console.log(`CPF Generado: ${cpf}`);
25console.log(`Es válido: ${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 Generado: " + cpf);
50 System.out.println("Es válido: " + validateCPF(cpf));
51 }
52}
53
Estos ejemplos demuestran cómo generar y validar CPFs en Python, JavaScript y Java. Puede adaptar estas funciones a sus necesidades específicas o integrarlas en sistemas más grandes que requieran manejo de CPF.
Al usar CPFs generados, es crucial tener en cuenta los siguientes puntos:
Descubre más herramientas que podrían ser útiles para tu flujo de trabajo