Генератор CPF для тестирования и валидации данных
Генерируйте действительные, случайные номера CPF (Cadastro de Pessoas Físicas) для тестирования. Этот инструмент создает CPF, которые соответствуют официальному бразильскому формату и правилам валидации, не используя никакую реальную личную информацию.
Сгенерировать 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 года. "Изменяет законодательство о подоходном налоге, принимает различные меры налогового и финансового характера и принимает другие положения."
Обратная связь
Нажмите на уведомление об обратной связи, чтобы начать оставлять отзыв об этом инструменте
Связанные инструменты
Откройте для себя больше инструментов, которые могут быть полезны для вашего рабочего процесса