Генератор и валидатор CNPJ для тестирования в Бразилии
Генерируйте действительные номера CNPJ Бразилии и проверяйте существующие с помощью этого простого инструмента, предназначенного для разработчиков и тестировщиков, работающих с идентификаторами бизнеса в Бразилии.
Генератор и валидатор CNPJ Бразилии
Генератор CNPJ
Сгенерируйте действительный номер CNPJ Бразилии для тестирования.
Валидатор CNPJ
Проверьте, действителен ли номер CNPJ Бразилии.
Документация
Генератор и валидатор CNPJ Бразилии
Введение
CNPJ (Cadastro Nacional da Pessoa Jurídica) — это уникальный идентификационный номер, присваиваемый предприятиям и юридическим лицам в Бразилии. Этот инструмент генерации и валидации CNPJ Бразилии предоставляет простой и эффективный способ генерировать действительные номера CNPJ для тестирования и проверять существующие номера CNPJ в соответствии с официальным бразильским алгоритмом. Независимо от того, являетесь ли вы разработчиком, тестирующим приложения, которые обрабатывают данные бразильских компаний, профессионалом по контролю качества, создающим тестовые случаи, или любым другим, работающим с информацией о бразильских компаниях, этот инструмент упрощает процесс работы с номерами CNPJ.
В отличие от реальных номеров CNPJ, которые официально выдаются Федеральной налоговой службой Бразилии (Receita Federal), CNPJ, сгенерированные этим инструментом, математически действительны, но не зарегистрированы за реальными компаниями. Это делает их идеальными для сценариев тестирования, образцов данных и сред разработки, где вам нужны правильно отформатированные и действительные номера CNPJ без использования реальных идентификаторов бизнеса.
Что такое CNPJ?
CNPJ (Cadastro Nacional da Pessoa Jurídica) — это 14-значный идентификационный номер, присваиваемый предприятиям и юридическим лицам Федеральной налоговой службой Бразилии. Он служит бразильским аналогом номера регистрации компании или налогового идентификатора. Каждое законно действующее предприятие в Бразилии должно иметь CNPJ, который используется для:
- Налоговой отчетности и соблюдения норм
- Регистрации бизнеса в государственных органах
- Открытия банковских счетов
- Выдачи счетов и квитанций
- Участия в государственных тендерах
- Импортирования и экспортирования товаров
CNPJ является важным идентификатором в бизнес-экосистеме Бразилии и появляется на официальных документах, контрактах и финансовых записях.
Структура и формат CNPJ
Бразильский CNPJ состоит из 14 цифр, обычно форматируется как: XX.XXX.XXX/YYYY-ZZ
Структура разбивается следующим образом:
- Первые 8 цифр (XX.XXX.XXX): базовый номер, присвоенный компании
- 4 цифры после косой черты (YYYY): идентификатор филиала (0001 для головного офиса, другие номера для филиалов)
- Последние 2 цифры (ZZ): контрольные цифры для валидации
Например, правильно отформатированный CNPJ может выглядеть так: 12.345.678/0001-95
Контрольные цифры (последние две цифры) рассчитываются с использованием специфического математического алгоритма, который валидирует подлинность CNPJ. Этот алгоритм гарантирует, что случайно сгенерированные номера не могут пройти валидацию без соблюдения правильного метода расчета.
Как работает валидация CNPJ
Алгоритм валидации CNPJ использует взвешенное вычисление для определения контрольных цифр. Вот как это работает:
Расчет первой контрольной цифры
- Умножьте каждую из первых 12 цифр на последовательность весов: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- Сложите результаты этих умножений
- Вычислите остаток от этой суммы, разделенной на 11
- Если остаток меньше 2, первая контрольная цифра равна 0; в противном случае это 11 минус остаток
Расчет второй контрольной цифры
- Умножьте каждую из первых 13 цифр (включая первую контрольную цифру) на последовательность весов: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- Сложите результаты этих умножений
- Вычислите остаток от этой суммы, разделенной на 11
- Если остаток меньше 2, вторая контрольная цифра равна 0; в противном случае это 11 минус остаток
Чтобы CNPJ был действителен, обе контрольные цифры должны совпадать с рассчитанными значениями.
Как использовать этот инструмент
Наш инструмент генерации и валидации CNPJ Бразилии предлагает две основные функции: генерацию действительных CNPJ и валидацию существующих номеров CNPJ.
Генерация CNPJ
Чтобы сгенерировать действительный CNPJ для тестирования:
- Перейдите в раздел "Генератор CNPJ" инструмента
- Нажмите кнопку "Сгенерировать CNPJ"
- В отформатированном отображении появится математически действительный CNPJ
- Используйте кнопку "Копировать", чтобы скопировать сгенерированный CNPJ в буфер обмена
Сгенерированный CNPJ будет следовать всем математическим правилам валидации реального CNPJ, но не зарегистрирован в Федеральной налоговой службе Бразилии.
Валидация CNPJ
Чтобы проверить, является ли CNPJ математически действительным:
- Перейдите в раздел "Валидатор CNPJ" инструмента
- Введите CNPJ, который вы хотите проверить, в поле ввода
- Инструмент принимает CNPJ с форматированием или без него (точки, косые черты и дефисы)
- Нажмите кнопку "Проверить"
- Инструмент отобразит, действителен ли CNPJ или нет, на основе алгоритма контрольных цифр
Валидатор проверяет, соответствует ли CNPJ правильному формату и совпадают ли контрольные цифры с ожидаемыми значениями в соответствии с алгоритмом валидации.
Сценарии использования
Этот инструмент генерации и валидации CNPJ Бразилии особенно полезен в следующих сценариях:
Разработка программного обеспечения и тестирование
- Создание тестовых данных: Генерируйте действительные CNPJ для заполнения тестовых баз данных без использования реальных идентификаторов компаний
- Модульное тестирование: Проверяйте функции обработки CNPJ в вашем коде с известными действительными и недействительными примерами
- Тестирование контроля качества: Создавайте тестовые случаи для форм и интерфейсов, которые требуют ввода CNPJ
- Интеграционное тестирование: Тестируйте системы, которые обмениваются данными с государственными службами Бразилии или финансовыми учреждениями
Образование и обучение
- Изучение формата CNPJ: Понимание структуры бразильских идентификаторов бизнеса
- Изучение алгоритмов: Изучение того, как работает валидация контрольных цифр на практике
- Техники валидации данных: Изучение реальных примеров требований к валидации данных
Обработка данных
- Очистка данных: Валидация CNPJ в существующих наборах данных для выявления потенциальных ошибок
- Валидация форм: Реализация клиентской или серверной валидации для ввода CNPJ
- Анонимизация данных: Замена реальных CNPJ на сгенерированные при подготовке наборов данных для анализа
Международный бизнес
- Подготовка к выходу на рынок: Понимание требований к идентификации бизнеса в Бразилии
- Подготовка документов: Обеспечение правильного форматирования при подготовке бизнес-документов для Бразилии
- Проверка соответствия: Проверка, что собранные номера CNPJ хотя бы математически действительны
Альтернативы
Хотя наш инструмент предоставляет простое решение для генерации и валидации CNPJ в браузере, существует несколько альтернатив в зависимости от ваших конкретных потребностей:
Библиотеки программирования
Для разработчиков, интегрирующих валидацию CNPJ непосредственно в приложения, доступны несколько библиотек для конкретных языков:
- JavaScript:
cpf_cnpj.js
,validator.js
- Python:
python-cnpj
,validate-docbr
- PHP:
brazilianutils
,respect/validation
- Java:
caelum-stella
,commons-validator
- Ruby:
cpf_cnpj
,brazilian-rails
Эти библиотеки часто предоставляют дополнительную функциональность, такую как форматирование, парсинг и валидация других бразильских документов.
API-сервисы
Для приложений, требующих валидации без реализации алгоритма:
- API бразильского правительства (требуется регистрация)
- Коммерческие API валидации, которые включают проверку CNPJ
- Сервисы бизнес-информации, которые проверяют по официальной базе данных
Ручной расчет
Для образовательных целей или одноразовых валидаций вы можете вручную применить алгоритм:
- Извлеките первые 12 цифр CNPJ
- Выполните взвешенные вычисления, как описано ранее
- Сравните рассчитанные контрольные цифры с фактическими контрольными цифрами
Тем не менее, ручной расчет подвержен ошибкам и неэффективен для регулярного использования.
Техническая реализация
Генератор и валидатор CNPJ в этом инструменте реализованы с использованием JavaScript, что делает его быстрым и способным работать полностью в вашем браузере без отправки ваших данных на сервер. Вот как работают основные функции:
Алгоритм генерации CNPJ
1function generateCNPJ() {
2 // Генерируем первые 12 цифр случайным образом
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Рассчитываем первую контрольную цифру
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Рассчитываем вторую контрольную цифру
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Форматируем CNPJ
14 return formatCNPJ(digits.join(''));
15}
16
17function calculateCheckDigit(digits) {
18 const weights = digits.length < 13
19 ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
20 : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
21
22 const sum = digits.reduce((acc, digit, index) => {
23 return acc + digit * weights[index];
24 }, 0);
25
26 const remainder = sum % 11;
27 return remainder < 2 ? 0 : 11 - remainder;
28}
29
Алгоритм валидации CNPJ
1function validateCNPJ(cnpj) {
2 // Убираем нечисловые символы
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Проверяем, имеет ли он правильную длину
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Проверяем известные недействительные шаблоны (все одинаковые цифры)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Преобразуем в массив цифр
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Проверяем первую контрольную цифру
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Проверяем вторую контрольную цифру
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
Функция форматирования CNPJ
1function formatCNPJ(cnpj) {
2 // Убираем нечисловые символы
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Форматируем в зависимости от длины
6 if (cleanCNPJ.length <= 2) {
7 return cleanCNPJ;
8 } else if (cleanCNPJ.length <= 5) {
9 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2)}`;
10 } else if (cleanCNPJ.length <= 8) {
11 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5)}`;
12 } else if (cleanCNPJ.length <= 12) {
13 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8)}`;
14 } else {
15 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8, 12)}-${cleanCNPJ.slice(12, 14)}`;
16 }
17}
18
Эти основные функции могут быть реализованы на других языках программирования, следуя той же логике. Вот примеры на Python и Java:
Реализация на Python
1import random
2
3def calculate_check_digit(digits):
4 weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] if len(digits) < 13 else [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5
6 total = 0
7 for i in range(len(digits)):
8 total += digits[i] * weights[i]
9
10 remainder = total % 11
11 return 0 if remainder < 2 else 11 - remainder
12
13def generate_cnpj():
14 # Генерируем первые 12 цифр случайным образом
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Рассчитываем первую контрольную цифру
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Рассчитываем вторую контрольную цифру
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Форматируем CNPJ
26 cnpj = ''.join(map(str, digits))
27 return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
28
29def validate_cnpj(cnpj):
30 # Убираем нечисловые символы
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Проверяем длину
34 if len(cnpj) != 14:
35 return False
36
37 # Проверяем, все ли цифры одинаковые
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Преобразуем в список целых чисел
42 digits = [int(d) for d in cnpj]
43
44 # Валидируем первую контрольную цифру
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Валидируем вторую контрольную цифру
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
Реализация на Java
1import java.util.Random;
2
3public class CNPJUtils {
4
5 public static String generateCNPJ() {
6 Random random = new Random();
7 int[] digits = new int[14];
8
9 // Генерируем первые 12 цифр случайным образом
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Рассчитываем первую контрольную цифру
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Рассчитываем вторую контрольную цифру
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Форматируем CNPJ
21 return String.format("%02d.%03d.%03d/%04d-%02d",
22 digits[0] * 10 + digits[1],
23 digits[2] * 100 + digits[3] * 10 + digits[4],
24 digits[5] * 100 + digits[6] * 10 + digits[7],
25 digits[8] * 1000 + digits[9] * 100 + digits[10] * 10 + digits[11],
26 digits[12] * 10 + digits[13]);
27 }
28
29 private static int calculateCheckDigit(int[] digits, int length) {
30 int[] weights = length < 13
31 ? new int[]{5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}
32 : new int[]{6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
33
34 int sum = 0;
35 for (int i = 0; i < length; i++) {
36 sum += digits[i] * weights[i];
37 }
38
39 int remainder = sum % 11;
40 return remainder < 2 ? 0 : 11 - remainder;
41 }
42
43 public static boolean validateCNPJ(String cnpj) {
44 // Убираем нечисловые символы
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Проверяем длину
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Проверяем, все ли цифры одинаковые
53 boolean allDigitsSame = true;
54 for (int i = 1; i < cnpj.length(); i++) {
55 if (cnpj.charAt(i) != cnpj.charAt(0)) {
56 allDigitsSame = false;
57 break;
58 }
59 }
60 if (allDigitsSame) {
61 return false;
62 }
63
64 // Преобразуем в массив целых чисел
65 int[] digits = new int[14];
66 for (int i = 0; i < 14; i++) {
67 digits[i] = Character.getNumericValue(cnpj.charAt(i));
68 }
69
70 // Валидируем первую контрольную цифру
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Валидируем вторую контрольную цифру
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Важные замечания
При использовании этого инструмента генерации и валидации CNPJ имейте в виду следующие соображения:
Юридические и этические соображения
- Не для мошенничества: Сгенерированные CNPJ никогда не должны использоваться в мошеннических целях или для введения в заблуждение
- Только для тестирования: Эти CNPJ предназначены только для целей тестирования и разработки
- Не зарегистрированы: Сгенерированные CNPJ математически действительны, но не зарегистрированы в бразильских органах
- Нет реальной действительности: Их нельзя использовать для фактической регистрации бизнеса или налоговых целей
Технические ограничения
- Нет информации о бизнесе: Сгенерированные CNPJ не содержат реальных кодов сектора бизнеса или информации о местоположении
- Нет проверки базы данных: Валидатор проверяет только математическую действительность, а не статус регистрации
- Вариации формата: Хотя инструмент обрабатывает распространенные вариации форматирования, некоторые системы могут требовать специфических форматов
Соображения безопасности
- Обработка на стороне клиента: Вся обработка происходит в вашем браузере; никакие данные не отправляются на сервер
- Нет хранения данных: Сгенерированные CNPJ не хранятся и не записываются
- Нет личных данных: Инструмент не обрабатывает и не использует никакую личную информацию
Часто задаваемые вопросы
Для чего используется CNPJ в Бразилии?
CNPJ — это национальный регистрационный номер для предприятий и юридических лиц в Бразилии. Он используется для налоговых целей, регистрации бизнеса, открытия банковских счетов и идентификации компаний в официальных сделках.
Являются ли CNPJ, сгенерированные этим инструментом, реальными?
Нет. CNPJ, сгенерированные этим инструментом, математически действительны в соответствии с алгоритмом контрольных цифр, но они не зарегистрированы в Федеральной налоговой службе Бразилии и не принадлежат реальным компаниям.
Могу ли я использовать сгенерированные CNPJ для своего бизнеса?
Нет. Чтобы получить законный CNPJ для бизнеса, вы должны зарегистрироваться в Федеральной налоговой службе Бразилии (Receita Federal) в соответствии с официальным процессом. Сгенерированные CNPJ предназначены только для тестирования.
Как я могу узнать, принадлежит ли CNPJ реальной компании?
Чтобы проверить, зарегистрирован ли CNPJ за фактической компанией, вам необходимо обратиться к базе данных Федеральной налоговой службы Бразилии. Наш инструмент проверяет только математическую действительность CNPJ, но не его официальную регистрацию.
Почему валидатор отклоняет CNPJ с одинаковыми цифрами?
CNPJ с одинаковыми цифрами (например, 11.111.111/1111-11) автоматически считаются недействительными, даже если они математически проходят алгоритм контрольных цифр. Это правило установлено Федеральной налоговой службой Бразилии.
Хранит ли инструмент CNPJ, которые я генерирую или валидирую?
Нет. Вся обработка происходит в вашем браузере, и мы не храним и не передаем никакие CNPJ, которые вы генерируете или валидируете.
Могу ли я сгенерировать несколько CNPJ сразу?
Текущая версия инструмента генерирует один CNPJ за раз. Для массовой генерации вы можете рассмотреть возможность использования одной из библиотек программирования, упомянутых в разделе Альтернативы.
Почему формат XX.XXX.XXX/XXXX-XX важен?
Это официальный формат, требуемый бразильскими органами. Специфическая группировка помогает идентифицировать разные компоненты CNPJ, такие как базовый номер и идентификатор филиала.
Как мне валидировать CNPJ программно?
Вы можете реализовать алгоритм валидации на предпочитаемом вами языке программирования, используя примеры кода, предоставленные в разделе Техническая реализация, или использовать одну из библиотек, упомянутых в разделе Альтернативы.
Существуют ли специальные CNPJ для государственных учреждений?
Да. Государственные учреждения в Бразилии имеют специфические шаблоны CNPJ. Например, федеральные государственные учреждения часто начинаются с определенных цифр. Наш генератор создает случайные CNPJ и не генерирует специально CNPJ для государственных учреждений.
Ссылки
- Федеральная налоговая служба Бразилии (Receita Federal do Brasil) - Официальный сайт
- "CNPJ - Cadastro Nacional da Pessoa Jurídica" - Wikipedia
- Гражданский кодекс Бразилии (Закон № 10.406/2002) - Правовая основа для бизнес-структур в Бразилии
- Нормативная инструкция по регистрации бизнеса в Бразилии (IN RFB № 1863/2018) - Регламенты по регистрации CNPJ
Попробуйте сейчас
Наш инструмент генерации и валидации CNPJ Бразилии делает работу с этими идентификационными номерами простой и эффективной. Независимо от того, тестируете ли вы приложения, готовите образцы данных или валидируете существующие CNPJ, этот инструмент предоставляет простое решение без сложности интеграции API или продвинутых конфигураций.
Сгенерируйте свой первый действительный CNPJ сейчас или проверьте существующий с помощью нашего простого интерфейса!
Обратная связь
Нажмите на уведомление об обратной связи, чтобы начать оставлять отзыв об этом инструменте
Связанные инструменты
Откройте для себя больше инструментов, которые могут быть полезны для вашего рабочего процесса