Generator CPF za testiranje i validaciju podataka
Generišite važeće, nasumične CPF (Cadastro de Pessoas Físicas) brojeve za testiranje. Ovaj alat stvara CPF-ove koji su u skladu sa zvaničnim brazilskim formatom i pravilima validacije, bez korišćenja stvarnih ličnih informacija.
Generiši CPF
Dokumentacija
CPF Generator
Увод
CPF (Cadastro de Pessoas Físicas) је јединствени идентификатор који се додељује бразилским грађанима и резидентима у сврху опорезивања. Овај генератор креира валидне, насумичне CPF бројеве за тестирање. Важно је напоменути да ови генерисани CPF-ови нису повезани са стварним појединцима и треба их користити само у тестним окружењима.
Структура CPF-а
CPF се састоји од 11 цифара:
- Првих 9 цифара су основни бројеви
- Последње 2 цифре су контролне цифре
Формат се обично представља као: XXX.XXX.XXX-XX
Алгоритам валидације CPF-а
Алгоритам валидације CPF-а осигурава интегритет броја. Ево како функционише:
- Множите првих 9 цифара са тежинама (10 до 2)
- Суммирајте резултате
- Израчунате остатак суме подељене са 11
- Ако је остатак мањи од 2, прва контролна цифра је 0; у противном, то је 11 минус остатак
- Поновите поступак за првих 10 цифара (укључујући прву контролну цифру) са тежинама 11 до 2
- Израчунате другу контролну цифру користећи исто правило као прву
Како користити овај генератор
- Кликните на дугме "Генериши CPF"
- Валидан, насумичан CPF ће бити приказан
- Можете копирати генерисани CPF за употребу у вашим тестним сценаријима
Формула
Формула за генерисање валидног CPF-а је следећа:
1def generate_cpf():
2 # Генеришите 9 насумичних цифара
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Израчунате прву контролну цифру
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 # Израчунате другу контролну цифру
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
Израчунати
Генератор изводи следеће кораке:
- Генеришите 9 насумичних цифара
- Израчунате прву контролну цифру користећи горе описани алгоритам
- Израчунате другу контролну цифру
- Комбинујте све цифре да формирате комплетан CPF
Примери
Ево неких примера генерисаних CPF-ова:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Сценарији употребе
Генератор CPF-а је користан у разним сценаријима софтверског развоја и тестирања:
- Тестирање базе података: Попуните тест базе података валидним CPF бројевима
- Валидација формулара: Тестирајте валидацију уноса за бразилске регистрационе формуларе
- Тестирање АПИ-ја: Користите генерисане CPF-ове у АПИ захтевима који захтевају валидну бразилску идентификацију
- Тестирање перформанси: Генеришите велике сетове јединствених, валидних CPF-ова за тестирање оптерећења
- Тестирање корисничког интерфејса: Осигурајте правилно форматирање и приказ CPF бројева у корисничким интерфејсима
Алтернативе
Иако је CPF примарни идентификатор појединаца у Бразилу, постоје и други идентификатори који се могу користити у специфичним контекстима:
- RG (Registro Geral): Државни идентификациони документ
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Користи се за предузећа и правна лица
- PIS/PASEP: Користи се у сврхама повезаним са запослењем
Историја
CPF је уведен у Бразилу 1965. године као део ширих напора да се модернизује порески систем земље. У почетку, коришћен је углавном за сврхе пореза на доходак, али је током времена његова употреба проширена на разне друге области бразилске бирократије и трговине.
Кључни догађаји у историји CPF-а:
- 1965: CPF уведен за појединце
- 1972: CPF постаје обавезан за све пореске обвезнике
- 1990-их: CPF почиње да се шире користи у комерцијалним и финансијским трансакцијама
- 2000-их: Дигитални системи даље интегришу CPF у свакодневни живот у Бразилу
Данас, CPF је основни део интеракција бразилских грађана и резидената са владиним услугама, финансијским институцијама и многим комерцијалним трансакцијама.
Код примери
Ево код фрагмената за генерисање и валидацију CPF-ова у разним програмским језицима:
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## Пример употребе
21cpf = generate_cpf()
22print(f"Генерисани CPF: {cpf}")
23print(f"Да ли је валидан: {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// Пример употребе
23const cpf = generateCPF();
24console.log(`Генерисани CPF: ${cpf}`);
25console.log(`Да ли је валидан: ${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("Генерисани CPF: " + cpf);
50 System.out.println("Да ли је валидан: " + validateCPF(cpf));
51 }
52}
53
Ови примери демонстрирају како генерисати и верификовати CPF-ове у Питону, ЈаваСкрипту и Јави. Можете прилагодити ове функције вашим специфичним потребама или их интегрисати у веће системе који захтевају обраду CPF-а.
Правни и етички аспекти
Када користите генерисане CPF-ове, важно је имати на уму следеће тачке:
- Генерисани CPF-ови су само за тестирање и никада се не смеју користити за имитацију стварних појединаца или за било какве преварне активности.
- Јасно означите све тест податке који садрже генерисане CPF-ове како бисте спречили конфузију са стварним личним подацима.
- Будите свесни закона о заштити података и прописа у вашој јурисдикцији када обрађујете чак и лажне личне идентификаторе.
- У производним окружењима, увек користите праве, проверене CPF-ове које су обезбедили корисници или овлашћени извори.
- Имплементирајте одговарајуће безбедносне мере за заштиту и правих и генерисаних CPF-ова у вашим системима.
Референце
- Receita Federal do Brasil. "CPF - Cadastro de Pessoas Físicas." https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf
- Serpro. "Валидатор CPF." https://www.serpro.gov.br/links-fixos-superiores/validador-cpf
- Министарство финансија. "Историја CPF-а." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Закон бр. 4.862, од 29. новембра 1965. "Мени измене законодавства о порезу на доходак, усвајање разних мера фискалне и финансијске природе и друге одредбе."
Povratne informacije
Kliknite na obaveštenje o povratnim informacijama da biste započeli davanje povratnih informacija o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni tok