Генератор на ЕГН за тестови цели и валидация на данни
Генерирайте валидни, случайни ЕГН (Единен граждански номер) за тестови цели. Този инструмент създава ЕГН, които отговарят на официалния бразилски формат и правила за валидация, без да използва реална лична информация.
Генерирай CPF
Документация
Генератор на CPF
Въведение
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
- Валидиране на формуляри: Тествайте валидирането на входа за бразилски формуляри за регистрация на потребители
- Тестване на API: Използвайте генерирани CPF в API заявки, които изискват валидна бразилска идентификация
- Тестване на производителността: Генерирайте големи набори от уникални, валидни CPF за тестове на натоварване
- Тестване на UI/UX: Осигурете правилно форматиране и показване на номера на 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 на Python, JavaScript и Java. Можете да адаптирате тези функции към вашите специфични нужди или да ги интегрирате в по-големи системи, които изискват обработка на 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. "Validador de CPF." https://www.serpro.gov.br/links-fixos-superiores/validador-cpf
- Ministério da Fazenda. "История на CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Закон № 4.862 от 29 ноември 1965 г. "Променя законодателството за данъка върху доходите, приема различни мерки от фискален и финансов характер и дава други разпоредби."
Обратна връзка
Щракнете върху тост за обратна връзка, за да започнете да давате обратна връзка за този инструмент
Свързани инструменти
Открийте още инструменти, които могат да бъдат полезни за вашия работен процес