Atsitiktinių CPF numerių generatorius testavimui
Generuokite galiojančius, atsitiktinius CPF (Cadastro de Pessoas Físicas) numerius testavimo tikslais. Šis įrankis kuria CPF, kurie atitinka oficialų Brazilijos formatą ir validacijos taisykles, nenaudodamas jokios tikros asmeninės informacijos.
Generuoti CPF
Dokumentacija
CPF Generator
Įvadas
CPF (Cadastro de Pessoas Físicas) yra unikalus identifikatorius, priskirtas Brazilijos piliečiams ir gyventojams mokesčių tikslais. Šis generatorius sukuria galiojančius, atsitiktinius CPF numerius testavimo tikslais. Svarbu pažymėti, kad šie sugeneruoti CPF nėra susiję su tikrais asmenimis ir turėtų būti naudojami tik testavimo aplinkose.
CPF struktūra
CPF susideda iš 11 skaitmenų:
- Pirmieji 9 skaitmenys yra baziniai skaičiai
- Paskutiniai 2 skaitmenys yra kontroliniai skaitmenys
Formatas paprastai atvaizduojamas kaip: XXX.XXX.XXX-XX
CPF patikros algoritmas
CPF patikros algoritmas užtikrina numerio vientisumą. Štai kaip jis veikia:
- Pirmuosius 9 skaitmenis padauginkite iš svorių (10 iki 2)
- Sudėkite rezultatus
- Apskaičiuokite liekaną, padalijus sumą iš 11
- Jei liekana yra mažesnė nei 2, pirmasis kontrolinis skaitmuo yra 0; kitaip, tai yra 11 minus liekana
- Pakartokite procesą pirmiems 10 skaitmenims (įskaitant pirmąjį kontrolinį skaitmenį) su svoriais 11 iki 2
- Apskaičiuokite antrąjį kontrolinį skaitmenį, naudodami tą pačią taisyklę kaip ir pirmam
Kaip naudoti šį generatorių
- Paspauskite mygtuką "Generuoti CPF"
- Bus rodomas galiojantis, atsitiktinis CPF
- Galite nukopijuoti sugeneruotą CPF, kad naudotumėte savo testavimo scenarijose
Formulė
Galiojančio CPF generavimo formulė yra tokia:
1def generate_cpf():
2 # Sugeneruoti 9 atsitiktinius skaitmenis
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Apskaičiuoti pirmąjį kontrolinį skaitmenį
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 # Apskaičiuoti antrąjį kontrolinį skaitmenį
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
Apskaičiavimas
Generatorius atlieka šiuos veiksmus:
- Sugeneruoja 9 atsitiktinius skaitmenis
- Apskaičiuoja pirmąjį kontrolinį skaitmenį, naudodamas aukščiau aprašytą algoritmą
- Apskaičiuoja antrąjį kontrolinį skaitmenį
- Sujungia visus skaitmenis, kad sudarytų visą CPF
Pavyzdžiai
Štai keletas sugeneruotų CPF pavyzdžių:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Naudojimo atvejai
CPF generatorius yra naudingas įvairiuose programinės įrangos kūrimo ir testavimo scenarijuose:
- Duomenų bazės testavimas: užpildyti testines duomenų bazes galiojančiais CPF numeriais
- Formos patikra: testuoti įvesties patikrą Brazilijos vartotojų registracijos formose
- API testavimas: naudoti sugeneruotus CPF API užklausose, kurioms reikalingas galiojantis Brazilijos identifikavimas
- Veikimo testavimas: generuoti didelius unikalių, galiojančių CPF rinkinius apkrovos testavimui
- UI/UX testavimas: užtikrinti tinkamą CPF numerių formatavimą ir atvaizdavimą vartotojo sąsajose
Alternatyvos
Nors CPF yra pagrindinis asmens identifikatorius Brazilijoje, tam tikrose kontekstuose gali būti naudojami ir kiti identifikatoriai:
- RG (Registro Geral): valstybės išduotas tapatybės dokumentas
- CNPJ (Cadastro Nacional da Pessoa Jurídica): naudojamas verslams ir juridiniams asmenims
- PIS/PASEP: naudojamas su darbu susijusiems tikslams
Istorija
CPF buvo pristatytas Brazilijoje 1965 m. kaip platesnių pastangų modernizuoti šalies mokesčių sistemą dalis. Iš pradžių jis buvo naudojamas daugiausia pajamų mokesčių tikslais, tačiau laikui bėgant jo naudojimas išsiplėtė į įvairias kitas Brazilijos biurokratijos ir komercijos sritis.
Pagrindiniai CPF istorijos etapai:
- 1965: CPF pristatytas asmenims
- 1972: CPF tampa privalomas visiems mokesčius mokantiems asmenims
- 1990-aisiais: CPF pradeda plačiau naudoti komercinėse ir finansinėse operacijose
- 2000-aisiais: skaitmeniniai sistemų sprendimai dar labiau integruoja CPF į kasdienį gyvenimą Brazilijoje
Šiandien CPF yra esminė Brazilijos piliečių ir gyventojų sąveikos su vyriausybinėmis paslaugomis, finansų institucijomis ir daugeliu komercinių sandorių dalis.
Kodo pavyzdžiai
Štai kodo fragmentai, skirti CPF generavimui ir patikrai įvairiose programavimo kalbose:
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## Pavyzdžio naudojimas
21cpf = generate_cpf()
22print(f"Sugeneruotas CPF: {cpf}")
23print(f"Ar galioja: {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// Pavyzdžio naudojimas
23const cpf = generateCPF();
24console.log(`Sugeneruotas CPF: ${cpf}`);
25console.log(`Ar galioja: ${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("Sugeneruotas CPF: " + cpf);
50 System.out.println("Ar galioja: " + validateCPF(cpf));
51 }
52}
53
Šie pavyzdžiai demonstruoja, kaip generuoti ir patikrinti CPF Python, JavaScript ir Java kalbose. Galite pritaikyti šias funkcijas savo specifiniams poreikiams arba integruoti jas į didesnes sistemas, kurioms reikalingas CPF tvarkymas.
Teisiniai ir etiniai aspektai
Naudodami sugeneruotus CPF, svarbu atkreipti dėmesį į šiuos punktus:
- Sugeneruoti CPF yra skirti tik testavimo tikslams ir niekada neturėtų būti naudojami imituojant tikrus asmenis ar bet kokiai sukčiavimo veiklai.
- Aiškiai pažymėkite bet kokius testinius duomenis, kuriuose yra sugeneruoti CPF, kad būtų išvengta painiavos su tikrais asmeniniais duomenimis.
- Būkite sąmoningi apie duomenų apsaugos įstatymus ir taisykles savo jurisdikcijoje, kai tvarkote net ir netikrus asmeninius identifikatorius.
- Produkcijos aplinkose visada naudokite tikrus, patvirtintus CPF, kuriuos pateikia vartotojai ar įgalioti šaltiniai.
- Įdiekite tinkamas saugumo priemones, kad apsaugotumėte tiek tikrus, tiek sugeneruotus CPF savo sistemose.
Nuorodos
- 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 novembro de 1965. "Altera a legislação do impôsto de renda, adota diversas medidas de ordem fiscal e fazendária, e dá outras providências."
Atsiliepimai
Spauskite atsiliepimų pranešimą, kad pradėtumėte palikti atsiliepimą apie šį įrankį
Susiję įrankiai
Atraskite daugiau įrankių, kurie gali būti naudingi jūsų darbo procesui