CPF ģeneratora rīks testēšanai un datu validācijai
Ģenerējiet derīgus, nejaušus CPF (Fizisko personu reģistra numurus) skaitļus testēšanas nolūkiem. Šis rīks izveido CPF, kas atbilst oficiālajam Brazīlijas formātam un validācijas noteikumiem, neizmantojot nevienu reālu personisko informāciju.
Ģenerēt CPF
Dokumentācija
CPF ģenerators
Ievads
CPF (Cadastro de Pessoas Físicas) ir unikāls identifikators, kas piešķirts Brazīlijas pilsoņiem un iedzīvotājiem nodokļu vajadzībām. Šis ģenerators izveido derīgus, nejaušus CPF numurus testēšanas nolūkiem. Ir svarīgi atzīmēt, ka šie ģenerētie CPF nav saistīti ar reālām personām un tos drīkst izmantot tikai testēšanas vidēs.
CPF struktūra
CPF sastāv no 11 cipariem:
- Pirmie 9 cipari ir bāzes numuri
- Pēdējie 2 cipari ir pārbaudes cipari
Formāts parasti tiek attēlots kā: XXX.XXX.XXX-XX
CPF validācijas algoritms
CPF validācijas algoritms nodrošina numura integritāti. Šeit ir tā darbība:
- Reiziniet pirmos 9 ciparus ar svariem (10 līdz 2)
- Saskaitiet rezultātus
- Aprēķiniet atlikumu, dalot summu ar 11
- Ja atlikums ir mazāks par 2, pirmais pārbaudes cipars ir 0; citādi tas ir 11 mīnus atlikums
- Atkārtojiet procesu pirmajiem 10 cipariem (ieskaitot pirmo pārbaudes ciparu) ar svariem 11 līdz 2
- Aprēķiniet otro pārbaudes ciparu, izmantojot to pašu noteikumu kā pirmajam
Kā izmantot šo ģeneratoru
- Noklikšķiniet uz pogas "Izveidot CPF"
- Tiks parādīts derīgs, nejaušs CPF
- Jūs varat kopēt ģenerēto CPF, lai izmantotu savos testēšanas scenārijos
Formula
Formula derīga CPF ģenerēšanai ir šāda:
1def generate_cpf():
2 # Izveido 9 nejaušus ciparus
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Aprēķina pirmo pārbaudes ciparu
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 # Aprēķina otro pārbaudes ciparu
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
Aprēķins
Ģenerators veic šādas darbības:
- Izveido 9 nejaušus ciparus
- Aprēķina pirmo pārbaudes ciparu, izmantojot iepriekš aprakstīto algoritmu
- Aprēķina otro pārbaudes ciparu
- Apvieno visus ciparus, lai izveidotu pilnu CPF
Piemēri
Šeit ir daži ģenerētu CPF piemēri:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Lietošanas gadījumi
CPF ģenerators ir noderīgs dažādās programmatūras izstrādes un testēšanas situācijās:
- Datu bāzes testēšana: Aizpildiet testu datu bāzes ar derīgiem CPF numuriem
- Formas validācija: Testējiet ievades validāciju Brazīlijas lietotāju reģistrācijas formās
- API testēšana: Izmantojiet ģenerētos CPF API pieprasījumos, kuros nepieciešama derīga Brazīlijas identifikācija
- Veiktspējas testēšana: Ģenerējiet lielus unikālu, derīgu CPF kopumus slodzes testēšanai
- UI/UX testēšana: Nodrošiniet pareizu CPF numuru formatēšanu un attēlošanu lietotāja saskarnēs
Alternatīvas
Lai gan CPF ir galvenais individuālais identifikators Brazīlijā, ir arī citi identifikatori, kurus var izmantot specifiskos kontekstos:
- RG (Registro Geral): Valsts izsniegts identitātes dokuments
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Izmanto uzņēmumiem un juridiskām personām
- PIS/PASEP: Izmanto nodarbinātības saistītām vajadzībām
Vēsture
CPF tika ieviests Brazīlijā 1965. gadā kā daļa no plašākas valsts nodokļu sistēmas modernizācijas. Sākotnēji tas tika izmantots galvenokārt ienākuma nodokļa vajadzībām, bet laika gaitā tā izmantošana paplašinājās uz dažādām citām Brazīlijas birokrātijas un komercijas jomām.
Galvenie notikumi CPF vēsturē:
- 1965: CPF ieviests individuālām personām
- 1972: CPF kļūst obligāts visām nodokļu maksātāju personām
-
- gadi: CPF sāk plašāk izmantot komerciālās un finanšu darījumos
-
- gadi: Digitālās sistēmas vēl vairāk integrē CPF ikdienas dzīvē Brazīlijā
Šodien CPF ir būtiska Brazīlijas pilsoņu un iedzīvotāju mijiedarbības sastāvdaļa ar valsts pakalpojumiem, finanšu iestādēm un daudziem komerciāliem darījumiem.
Koda piemēri
Šeit ir koda fragmenti CPF ģenerēšanai un validēšanai dažādās programmēšanas valodās:
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## Piemēra izmantošana
21cpf = generate_cpf()
22print(f"Ģenerētais CPF: {cpf}")
23print(f"Vai ir derīgs: {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// Piemēra izmantošana
23const cpf = generateCPF();
24console.log(`Ģenerētais CPF: ${cpf}`);
25console.log(`Vai ir derīgs: ${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("Ģenerētais CPF: " + cpf);
50 System.out.println("Vai ir derīgs: " + validateCPF(cpf));
51 }
52}
53
Šie piemēri demonstrē, kā ģenerēt un validēt CPF Python, JavaScript un Java valodās. Jūs varat pielāgot šīs funkcijas savām specifiskajām vajadzībām vai integrēt tās lielākās sistēmās, kurām nepieciešama CPF apstrāde.
Juridiskās un ētiskās apsvērumi
Izmantojot ģenerētus CPF, ir svarīgi ņemt vērā šādus punktus:
- Ģenerētie CPF ir paredzēti tikai testēšanas nolūkiem un tos nekad nedrīkst izmantot, lai ieņemtu reālas personas identitāti vai jebkādām krāpnieciskām darbībām.
- Skaidri marķējiet visus testu datus, kuros ir ģenerēti CPF, lai novērstu sajaukšanu ar reāliem personu datiem.
- Ievērojiet datu aizsardzības likumus un noteikumus savā jurisdikcijā, apstrādājot pat viltotus personiskos identifikatorus.
- Ražošanas vidēs vienmēr izmantojiet reālus, pārbaudītus CPF, ko sniedz lietotāji vai pilnvarotas avoti.
- Ieviesiet atbilstošus drošības pasākumus, lai aizsargātu gan reālus, gan ģenerētus CPF savās sistēmās.
Atsauces
- 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. "Vēsture CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembro de 1965. "Maina nodokļu likumdošanu, pieņem dažādus pasākumus fiskālajās un finanšu jomās un veic citas darbības."
Atsauksmes
Noklikšķiniet uz atsauksmju paziņojuma, lai sāktu sniegt atsauksmes par šo rīku
Saistītie rīki
Atklājiet vairāk rīku, kas varētu būt noderīgi jūsu darba plūsmā