Generador de CPF vàlid per a proves i escenaris de test
Genera números de CPF (Cadastro de Pessoas Físicas) vàlids i aleatoris per a fins de prova. Aquesta eina crea CPFs que compleixen amb el format oficial brasiler i les regles de validació, sense utilitzar cap informació personal real.
Generar CPF
Documentació
Generador de CPF
Introducció
El CPF (Cadastro de Pessoas Físicas) és un identificador únic assignat als ciutadans i residents brasilers per a fins fiscals. Aquest generador crea números de CPF vàlids i aleatoris per a fins de prova. És important tenir en compte que aquests CPFs generats no estan associats amb persones reals i només s'han d'utilitzar en entorns de prova.
Estructura d'un CPF
Un CPF consta de 11 dígits:
- Els primers 9 dígits són els números base
- Els darrers 2 dígits són dígits de control
El format es representa típicament com: XXX.XXX.XXX-XX
Algorisme de validació del CPF
L'algorisme de validació del CPF assegura la integritat del número. Així és com funciona:
- Multiplica els primers 9 dígits per pesos (10 a 2)
- Suma els resultats
- Calcula el residu de la suma dividida per 11
- Si el residu és menor que 2, el primer dígit de control és 0; d'altra manera, és 11 menys el residu
- Repeteix el procés per als primers 10 dígits (incloent el primer dígit de control) amb pesos 11 a 2
- Calcula el segon dígit de control utilitzant la mateixa regla que el primer
Com utilitzar aquest generador
- Feu clic al botó "Generar CPF"
- Es mostrarà un CPF vàlid i aleatori
- Podeu copiar el CPF generat per utilitzar-lo en els vostres escenaris de prova
Fórmula
La fórmula per generar un CPF vàlid és la següent:
1def generate_cpf():
2 # Generar 9 dígits aleatoris
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Calcular el primer dígit de control
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 segon dígit de control
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
Càlcul
El generador realitza els següents passos:
- Generar 9 dígits aleatoris
- Calcular el primer dígit de control utilitzant l'algorisme descrit anteriorment
- Calcular el segon dígit de control
- Combinar tots els dígits per formar el CPF complet
Exemples
Aquí hi ha alguns exemples de CPFs generats:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Casos d'ús
El generador de CPF és útil en diverses situacions de desenvolupament de programari i prova:
- Prova de bases de dades: Omplir bases de dades de prova amb números de CPF vàlids
- Validació de formularis: Provar la validació d'entrada per a formularis de registre d'usuaris brasilers
- Prova d'API: Utilitzar CPFs generats en sol·licituds d'API que requereixen identificació vàlida brasilera
- Prova de rendiment: Generar grans conjunts de CPFs únics i vàlids per a proves de càrrega
- Prova UI/UX: Assegurar un format i una visualització adequats dels números de CPF en interfícies d'usuari
Alternatives
Si bé el CPF és l'identificador principal dels individus a Brasil, hi ha altres identificadors que poden ser utilitzats en contextos específics:
- RG (Registro Geral): Un document d'identitat emès per l'estat
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Utilitzat per a empreses i entitats legals
- PIS/PASEP: Utilitzat per a fins relacionats amb l'ocupació
Història
El CPF es va introduir al Brasil el 1965 com a part d'un esforç més ampli per modernitzar el sistema fiscal del país. Inicialment, s'utilitzava principalment per a fins d'impost sobre la renda, però amb el temps, el seu ús es va expandir a diverses altres àrees de la burocràcia i el comerç brasiler.
Fites clau en la història del CPF:
- 1965: CPF introduït per a individus
- 1972: CPF esdevé obligatori per a tots els individus que paguen impostos
- Anys 90: CPF comença a ser utilitzat més àmpliament en transaccions comercials i financeres
- Anys 2000: Sistemes digitals integren encara més el CPF a la vida diària al Brasil
Avui, el CPF és una part essencial de les interaccions dels ciutadans i residents brasilers amb els serveis governamentals, les institucions financeres i moltes transaccions comercials.
Exemples de codi
Aquí hi ha fragments de codi per generar i validar CPFs en diversos llenguatges de programació:
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'ús
21cpf = generate_cpf()
22print(f"Generated CPF: {cpf}")
23print(f"Is valid: {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'ús
23const cpf = generateCPF();
24console.log(`Generated CPF: ${cpf}`);
25console.log(`Is valid: ${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("Generated CPF: " + cpf);
50 System.out.println("Is valid: " + validateCPF(cpf));
51 }
52}
53
Aquests exemples demostren com generar i validar CPFs en Python, JavaScript i Java. Podeu adaptar aquestes funcions a les vostres necessitats específiques o integrar-les en sistemes més grans que requereixin gestió de CPF.
Consideracions legals i ètiques
Quan utilitzeu CPFs generats, és crucial tenir en compte els següents punts:
- Els CPFs generats són només per a fins de prova i mai s'han d'utilitzar per fer-se passar per persones reals o per a activitats fraudulentes.
- Etiqueteu clarament qualsevol dada de prova que contingui CPFs generats per evitar confusions amb dades personals reals.
- Teniu en compte les lleis i regulacions de protecció de dades de la vostra jurisdicció quan manegeu fins i tot identificadors personals falsos.
- En entorns de producció, utilitzeu sempre CPFs reals i verificats proporcionats pels usuaris o fonts autoritzades.
- Implementar mesures de seguretat adequades per protegir tant els CPFs reals com els generats en els vostres sistemes.
Referències
- 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. "História do CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembre de 1965. "Altera a legislação del impôsto de renda, adota diverses mesures d'ordre fiscal i fa altres disposicions."
Comentaris
Fes clic a la notificació de comentaris per començar a donar comentaris sobre aquesta eina
Eines relacionades
Descobreix més eines que podrien ser útils per al teu flux de treball