Generator CPF za testiranje in ustvarjanje testnih podatkov
Ustvarite veljavne, naključne številke CPF (Cadastro de Pessoas Físicas) za testne namene. Ta orodja ustvarjajo CPFe, ki ustrezajo uradnemu brazilskemu formatu in pravilom validacije, brez uporabe kakršnih koli pravih osebnih informacij.
Generiraj CPF
Dokumentacija
Generátor CPF
Uvod
CPF (Cadastro de Pessoas Físicas) je edinstven identifikator, dodeljen brazilskim državljanom in prebivalcem za davčne namene. Ta generator ustvarja veljavne, naključne številke CPF za testne namene. Pomembno je omeniti, da te generirane številke CPF niso povezane z resničnimi posamezniki in jih je mogoče uporabljati le v testnih okoljih.
Struktura CPF
CPF se sestavlja iz 11 številk:
- Prvih 9 številk so osnovne številke
- Zadnji 2 številki sta kontrolni številki
Oblika je običajno predstavljena kot: XXX.XXX.XXX-XX
Algoritem za validacijo CPF
Algoritem za validacijo CPF zagotavlja celovitost številke. Tukaj je, kako deluje:
- Pomnožite prvih 9 številk z utežmi (10 do 2)
- Seštejte rezultate
- Izračunajte ostanek seštevka, deljenega z 11
- Če je ostanek manjši od 2, je prva kontrolna številka 0; sicer je to 11 minus ostanek
- Postopek ponovite za prvih 10 številk (vključno s prvo kontrolno številko) z utežmi 11 do 2
- Izračunajte drugo kontrolno številko po istem pravilu kot prvo
Kako uporabljati ta generator
- Kliknite gumb "Generiraj CPF"
- Prikazana bo veljavna, naključna številka CPF
- Generirano številko CPF lahko kopirate za uporabo v svojih testnih scenarijih
Formula
Formula za generiranje veljavnega CPF je naslednja:
1def generate_cpf():
2 # Ustvari 9 naključnih številk
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Izračunaj prvo kontrolno številko
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 # Izračunaj drugo kontrolno številko
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
Izračun
Generator izvede naslednje korake:
- Ustvari 9 naključnih številk
- Izračunaj prvo kontrolno številko z uporabo zgoraj opisanega algoritma
- Izračunaj drugo kontrolno številko
- Združi vse številke, da oblikuješ celoten CPF
Primeri
Tukaj je nekaj primerov generiranih CPF-jev:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Uporabniški scenariji
Generator CPF je koristen v različnih scenarijih razvoja programske opreme in testiranja:
- Testiranje podatkovne baze: Napolnite testne podatkovne baze z veljavnimi številkami CPF
- Validacija obrazcev: Testirajte vhodno validacijo za obrazce za registracijo uporabnikov v Braziliji
- Testiranje API: Uporabite generirane CPF-je v API zahtevah, ki zahtevajo veljavno brazilsko identifikacijo
- Testiranje zmogljivosti: Generirajte velike nize edinstvenih, veljavnih CPF-jev za obremenitveno testiranje
- Testiranje UI/UX: Zagotovite pravilno oblikovanje in prikaz številk CPF v uporabniških vmesnikih
Alternativne možnosti
Medtem ko je CPF glavni identifikator posameznikov v Braziliji, obstajajo drugi identifikatorji, ki se lahko uporabljajo v specifičnih kontekstih:
- RG (Registro Geral): Državna identifikacijska dokumentacija
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Uporablja se za podjetja in pravne osebe
- PIS/PASEP: Uporablja se za namene, povezane z zaposlitvijo
Zgodovina
CPF je bil uveden v Braziliji leta 1965 kot del širšega prizadevanja za modernizacijo davčnega sistema države. Sprva je bil uporabljen predvsem za davčne namene, vendar se je njegova uporaba sčasoma razširila na različna druga področja brazilskega birokratskega in trgovinskega sistema.
Ključni mejniki v zgodovini CPF:
- 1965: CPF uveden za posameznike
- 1972: CPF postane obvezen za vse davčne zavezance
- 1990-ih: CPF se začne širše uporabljati v komercialnih in finančnih transakcijah
- 2000-ih: Digitalni sistemi še dodatno integrirajo CPF v vsakdanje življenje v Braziliji
Danes je CPF bistven del interakcij brazilskih državljanov in prebivalcev z vladnimi storitvami, finančnimi institucijami in številnimi komercialnimi transakcijami.
Kodeksni primeri
Tukaj so primeri kode za generiranje in validacijo CPF-jev v različnih programskih jezikih:
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## Primer uporabe
21cpf = generate_cpf()
22print(f"Generiran CPF: {cpf}")
23print(f"Je veljaven: {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// Primer uporabe
23const cpf = generateCPF();
24console.log(`Generiran CPF: ${cpf}`);
25console.log(`Je veljaven: ${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("Generiran CPF: " + cpf);
50 System.out.println("Je veljaven: " + validateCPF(cpf));
51 }
52}
53
Ti primeri prikazujejo, kako generirati in validirati CPF-je v Pythonu, JavaScriptu in Javi. Te funkcije lahko prilagodite svojim specifičnim potrebam ali jih integrirate v večje sisteme, ki zahtevajo obravnavo CPF.
Pravni in etični vidiki
Ko uporabljate generirane CPF-je, je ključnega pomena, da upoštevate naslednje točke:
- Generirani CPF-ji so namenjeni samo testiranju in jih nikoli ne smete uporabljati za posnemanje resničnih posameznikov ali za kakršne koli goljufive dejavnosti.
- Jasno označite vse testne podatke, ki vsebujejo generirane CPF-je, da preprečite zmedo z resničnimi osebnimi podatki.
- Bodite pozorni na zakone in predpise o varstvu podatkov v vaši jurisdikciji, ko ravnate celo z lažnimi osebnimi identifikatorji.
- V proizvodnih okoljih vedno uporabljajte prave, preverjene CPF-je, ki jih zagotovijo uporabniki ali pooblaščeni viri.
- Uvedite ustrezne varnostne ukrepe za zaščito tako pravih kot generiranih CPF-jev v vaših sistemih.
Reference
- 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. "Zgodovina CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembro de 1965. "Spremeni zakonodajo o dohodnini, sprejmi različne ukrepe davčne in finančne narave ter sprejmi druge določbe."
Povratne informacije
Kliknite na toast za povratne informacije, da začnete dajati povratne informacije o tem orodju
Sorodne orodja
Odkrijte več orodij, ki bi lahko bila koristna za vaš delovni proces