Ģ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.
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 sastāv no 11 cipariem:
Formāts parasti tiek attēlots kā: XXX.XXX.XXX-XX
CPF validācijas algoritms nodrošina numura integritāti. Šeit ir tā darbība:
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
Ģenerators veic šādas darbības:
Šeit ir daži ģenerētu CPF piemēri:
CPF ģenerators ir noderīgs dažādās programmatūras izstrādes un testēšanas situācijās:
Lai gan CPF ir galvenais individuālais identifikators Brazīlijā, ir arī citi identifikatori, kurus var izmantot specifiskos kontekstos:
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ē:
Š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.
Š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.
Izmantojot ģenerētus CPF, ir svarīgi ņemt vērā šādus punktus:
Atklājiet vairāk rīku, kas varētu būt noderīgi jūsu darbplūsmai