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.
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 susideda iš 11 skaitmenų:
Formatas paprastai atvaizduojamas kaip: XXX.XXX.XXX-XX
CPF patikros algoritmas užtikrina numerio vientisumą. Štai kaip jis veikia:
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
Generatorius atlieka šiuos veiksmus:
Štai keletas sugeneruotų CPF pavyzdžių:
CPF generatorius yra naudingas įvairiuose programinės įrangos kūrimo ir testavimo scenarijuose:
Nors CPF yra pagrindinis asmens identifikatorius Brazilijoje, tam tikrose kontekstuose gali būti naudojami ir kiti identifikatoriai:
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:
Šiandien CPF yra esminė Brazilijos piliečių ir gyventojų sąveikos su vyriausybinėmis paslaugomis, finansų institucijomis ir daugeliu komercinių sandorių dalis.
Š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.
Naudodami sugeneruotus CPF, svarbu atkreipti dėmesį į šiuos punktus:
Raskite daugiau įrankių, kurie gali būti naudingi jūsų darbo eiga.