Nástroj pro generování a validaci brazilských CNPJ pro testování
Generujte platná brazilská čísla CNPJ a validujte existující pomocí tohoto jednoduchého nástroje určeného pro vývojáře a testery pracující s brazilskými identifikačními čísly podniků.
Generátor a validátor CNPJ pro Brazílii
Generátor CNPJ
Vygenerujte platné číslo CNPJ pro testovací účely.
Validátor CNPJ
Zkontrolujte, zda je číslo CNPJ platné.
Dokumentace
Generátor a validátor CNPJ pro Brazílii
Úvod
CNPJ (Cadastro Nacional da Pessoa Jurídica) je jedinečné identifikační číslo přidělené podnikům a právnickým osobám v Brazílii. Tento generátor a validátor CNPJ pro Brazílii poskytuje jednoduchý a efektivní způsob, jak generovat platná čísla CNPJ pro testovací účely a validovat existující čísla CNPJ podle oficiálního brazilského algoritmu. Ať už jste vývojář testující aplikace, které zpracovávají brazilská podniková data, profesionál v oblasti QA vytvářející testovací případy, nebo kdokoli pracující s informacemi o brazilských společnostech, tento nástroj zjednodušuje práci s čísly CNPJ.
Na rozdíl od skutečných čísel CNPJ, která jsou oficiálně vydávána Brazilskou federální daňovou službou (Receita Federal), jsou CNPJ generované tímto nástrojem matematicky platné, ale nejsou registrovány na skutečné společnosti. To je činí ideálními pro testovací scénáře, vzorová data a vývojová prostředí, kde potřebujete správně formátovaná a platná čísla CNPJ, aniž byste používali skutečné identifikátory podniků.
Co je to CNPJ?
CNPJ (Cadastro Nacional da Pessoa Jurídica) je 14místné identifikační číslo přidělené podnikům a právnickým osobám Brazilskou federální daňovou službou. Slouží jako brazilský ekvivalent registračního čísla společnosti nebo daňového identifikačního čísla. Každý podnik, který legálně působí v Brazílii, musí mít CNPJ, který se používá pro:
- Daňové hlášení a dodržování předpisů
- Registraci podniků u vládních agentur
- Otevírání bankovních účtů
- Vydávání faktur a pokladních dokladů
- Účast na vládních výběrových řízeních
- Dovoz a vývoz zboží
CNPJ je zásadním identifikátorem v brazilském podnikatelském ekosystému a objevuje se na oficiálních dokumentech, smlouvách a finančních záznamech.
Struktura a formát CNPJ
Brazilsko CNPJ se skládá ze 14 číslic, obvykle formátovaných jako: XX.XXX.XXX/YYYY-ZZ
Struktura se rozpadá následovně:
- Prvních 8 číslic (XX.XXX.XXX): Základní číslo přidělené společnosti
- 4 číslice za lomítkem (YYYY): Identifikátor pobočky (0001 pro sídlo, jiná čísla pro pobočky)
- Poslední 2 číslice (ZZ): Kontrolní číslice pro validaci
Například správně formátované CNPJ může vypadat takto: 12.345.678/0001-95
Kontrolní číslice (poslední dvě číslice) se vypočítávají pomocí specifického matematického algoritmu, který ověřuje autentičnost CNPJ. Tento algoritmus zajišťuje, že náhodně generovaná čísla nemohou projít validací, pokud nebudou následovat správnou metodu výpočtu.
Jak funguje validace CNPJ
Algoritmus validace CNPJ používá vážený výpočet k určení kontrolních číslic. Zde je, jak to funguje:
Výpočet první kontrolní číslice
- Vynásobte každou z prvních 12 číslic sekvencí vah: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- Sečtěte výsledky těchto násobení
- Vypočítejte zbytek této sumy dělené 11
- Pokud je zbytek menší než 2, první kontrolní číslice je 0; jinak je to 11 minus zbytek
Výpočet druhé kontrolní číslice
- Vynásobte každou z prvních 13 číslic (včetně první kontrolní číslice) sekvencí vah: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- Sečtěte výsledky těchto násobení
- Vypočítejte zbytek této sumy dělené 11
- Pokud je zbytek menší než 2, druhá kontrolní číslice je 0; jinak je to 11 minus zbytek
Aby bylo CNPJ platné, obě kontrolní číslice musí odpovídat vypočítaným hodnotám.
Jak používat tento nástroj
Náš nástroj pro generování a validaci CNPJ nabízí dvě hlavní funkce: generování platných CNPJ a validaci existujících čísel CNPJ.
Generování CNPJ
Chcete-li vygenerovat platné CNPJ pro testovací účely:
- Přejděte do sekce "Generátor CNPJ" nástroje
- Klikněte na tlačítko "Generovat CNPJ"
- V matematicky platném CNPJ se objeví v naformátovaném zobrazení
- Použijte tlačítko "Kopírovat", abyste zkopírovali vygenerované CNPJ do schránky
Vygenerované CNPJ bude dodržovat všechna pravidla matematické validace skutečného CNPJ, ale nebude registrováno u Brazilské federální daňové služby.
Validace CNPJ
Chcete-li zkontrolovat, zda je CNPJ matematicky platný:
- Přejděte do sekce "Validátor CNPJ" nástroje
- Zadejte CNPJ, který chcete validovat, do vstupního pole
- Nástroj přijímá CNPJ s nebo bez formátování (tečky, lomítka a pomlčky)
- Klikněte na tlačítko "Validovat"
- Nástroj zobrazí, zda je CNPJ platný nebo neplatný na základě algoritmu kontrolních číslic
Validátor kontroluje, zda CNPJ dodržuje správný formát a zda kontrolní číslice odpovídají očekávaným hodnotám podle validačního algoritmu.
Případy použití
Tento nástroj pro generování a validaci CNPJ je obzvlášť užitečný v následujících scénářích:
Vývoj a testování softwaru
- Vytváření testovacích dat: Generujte platná CNPJ pro naplnění testovacích databází bez použití skutečných identifikátorů podniků
- Jednotkové testování: Validujte funkce zpracování CNPJ ve svém kódu s dobře známými platnými a neplatnými příklady
- Testování QA: Vytvářejte testovací případy pro formuláře a rozhraní, která vyžadují vstup CNPJ
- Integrační testování: Testujte systémy, které vyměňují data s brazilskými vládními službami nebo finančními institucemi
Vzdělávání a školení
- Učení se formátu CNPJ: Pochopte, jak jsou strukturovány brazilské identifikátory podniků
- Studium algoritmu: Zkoumejte, jak funguje validace kontrolních číslic v praxi
- Techniky validace dat: Studujte příklady požadavků na validaci dat v reálném světě
Zpracování dat
- Údržba dat: Validujte CNPJ v existujících sadách dat, abyste identifikovali potenciální chyby
- Validace formulářů: Implementujte validaci na straně klienta nebo serveru pro vstupy CNPJ
- Anonymizace dat: Nahraďte skutečné CNPJ vygenerovanými platnými čísly při přípravě sad dat pro analýzu
Mezinárodní obchod
- Příprava na vstup na trh: Pochopte požadavky na identifikaci podniků v Brazílii
- Příprava dokumentů: Zajistěte správné formátování při přípravě obchodních dokumentů pro Brazílii
- Kontrola souladu: Ověřte, že shromážděná čísla CNPJ jsou alespoň matematicky platná
Alternativy
Zatímco náš nástroj poskytuje jednoduché, webové řešení pro generování a validaci CNPJ, existuje několik alternativ v závislosti na vašich specifických potřebách:
Knihovny programování
Pro vývojáře, kteří integrují validaci CNPJ přímo do aplikací, je k dispozici několik knihoven specifických pro jazyk:
- 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
Tyto knihovny často poskytují další funkce, jako je formátování, analýza a validace dalších brazilských dokumentů.
API služby
Pro aplikace vyžadující validaci bez implementace algoritmu:
- Brazilské vládní API (vyžaduje registraci)
- Komerční validační API, která zahrnují kontrolu CNPJ
- Služby informací o podnicích, které validují proti oficiální databázi
Ruční výpočet
Pro vzdělávací účely nebo jednorázové validace můžete ručně aplikovat algoritmus:
- Extrahujte prvních 12 číslic CNPJ
- Proveďte vážené výpočty, jak je popsáno výše
- Porovnejte vypočítané kontrolní číslice se skutečnými kontrolními číslicemi
Nicméně, ruční výpočet je náchylný k chybám a neefektivní pro pravidelné použití.
Technická implementace
Generátor a validátor CNPJ v tomto nástroji jsou implementovány pomocí JavaScriptu, což zajišťuje rychlost a schopnost běžet zcela ve vašem prohlížeči bez odesílání vašich dat na server. Zde je, jak fungují základní funkce:
Algoritmus generování CNPJ
1function generateCNPJ() {
2 // Náhodně vygenerujte prvních 12 číslic
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Vypočítejte první kontrolní číslici
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Vypočítejte druhou kontrolní číslici
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Naformátujte 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
Algoritmus validace CNPJ
1function validateCNPJ(cnpj) {
2 // Odstraňte nečíselné znaky
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Zkontrolujte, zda má správnou délku
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Zkontrolujte známé neplatné vzory (všechny stejné číslice)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Převeďte na pole číslic
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Zkontrolujte první ověřovací číslici
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Zkontrolujte druhou ověřovací číslici
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
Funkce formátování CNPJ
1function formatCNPJ(cnpj) {
2 // Odstraňte nečíselné znaky
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Formátujte podle délky
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
Tyto základní funkce mohou být implementovány v jiných programovacích jazycích podle stejné logiky. Zde jsou příklady v Pythonu a Javě:
Implementace v Pythonu
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 # Náhodně vygenerujte prvních 12 číslic
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Vypočítejte první kontrolní číslici
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Vypočítejte druhou kontrolní číslici
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Naformátujte 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 # Odstraňte nečíselné znaky
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Zkontrolujte délku
34 if len(cnpj) != 14:
35 return False
36
37 # Zkontrolujte, zda jsou všechny číslice stejné
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Převeďte na seznam celých čísel
42 digits = [int(d) for d in cnpj]
43
44 # Validujte první kontrolní číslici
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Validujte druhou kontrolní číslici
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
Implementace v Javě
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 // Náhodně vygenerujte prvních 12 číslic
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Vypočítejte první kontrolní číslici
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Vypočítejte druhou kontrolní číslici
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Naformátujte 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 // Odstraňte nečíselné znaky
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Zkontrolujte délku
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Zkontrolujte, zda jsou všechny číslice stejné
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 // Převeďte na pole celých čísel
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 // Validujte první kontrolní číslici
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Validujte druhou kontrolní číslici
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Důležité úvahy
Při používání tohoto nástroje pro generování a validaci CNPJ mějte na paměti následující úvahy:
Právní a etické úvahy
- Není pro podvod: Vygenerované CNPJ by nikdy neměly být použity pro podvodné účely nebo zkreslování
- Pouze pro testování: Tato CNPJ jsou určena pouze pro testovací a vývojové účely
- Není registrováno: Vygenerované CNPJ nejsou registrovány u brazilských úřadů
- Žádná reálná platnost: Nemohou být použity pro skutečnou registraci podniků nebo daňové účely
Technická omezení
- Žádné obchodní informace: Vygenerované CNPJ neobsahují skutečné kódy sektoru podnikání nebo informace o umístění
- Žádná databázová verifikace: Validátor kontroluje pouze matematickou platnost, nikoli stav registrace
- Variace formátu: I když nástroj zvládá běžné formátovací variace, některé systémy mohou vyžadovat specifické formáty
Bezpečnostní úvahy
- Zpracování na straně klienta: Všechny procesy probíhají ve vašem prohlížeči; žádná data nejsou odesílána na servery
- Žádné ukládání dat: Vygenerované CNPJ nejsou ukládány ani logovány
- Žádná osobní data: Nástroj nezpracovává žádné osobní informace
Často kladené otázky
K čemu se CNPJ v Brazílii používá?
CNPJ je národní registrační číslo pro podniky a právnické osoby v Brazílii. Používá se pro daňové účely, registraci podniků, otevírání bankovních účtů a identifikaci společností v oficiálních transakcích.
Jsou CNPJ generované tímto nástrojem skutečné?
Ne. CNPJ generované tímto nástrojem jsou matematicky platné podle algoritmu kontrolních číslic, ale nejsou registrovány u Brazilské federální daňové služby a nepatří skutečným společnostem.
Mohu použít vygenerované CNPJ pro svou firmu?
Ne. Abyste získali legitimní CNPJ pro podnik, musíte se registrovat u Brazilské federální daňové služby (Receita Federal) podle oficiálního postupu. Vygenerované CNPJ jsou určeny pouze pro testovací účely.
Jak mohu zjistit, zda CNPJ patří skutečné společnosti?
Abyste ověřili, zda je CNPJ registrován na skutečnou společnost, musíte se obrátit na databázi Brazilské federální daňové služby. Náš nástroj pouze kontroluje, zda je CNPJ matematicky platný, nikoli zda je oficiálně registrován.
Proč validátor odmítá CNPJ se všemi stejnými číslicemi?
CNPJ se všemi stejnými číslicemi (například 11.111.111/1111-11) jsou automaticky považovány za neplatné, i když matematicky projdou algoritmem kontrolních číslic. To je pravidlo stanovené Brazilskou federální daňovou službou.
Ukládá nástroj CNPJ, které generuji nebo validuji?
Ne. Všechny procesy probíhají ve vašem prohlížeči a my neukládáme ani nepřenášíme žádná CNPJ, která generujete nebo validujete.
Mohu generovat více CNPJ najednou?
Aktuální verze nástroje generuje jedno CNPJ najednou. Pro hromadné generování byste měli zvážit použití jedné z programovacích knihoven zmíněných v sekci Alternativy.
Proč je formát XX.XXX.XXX/XXXX-XX důležitý?
Toto je oficiální formát požadovaný brazilskými úřady. Specifické seskupení pomáhá identifikovat různé komponenty CNPJ, jako je základní číslo a identifikátor pobočky.
Jak mohu programově validovat CNPJ?
Můžete implementovat validační algoritmus ve svém preferovaném programovacím jazyce pomocí kódu uvedeného v sekci Technická implementace, nebo použít jednu z knihoven zmíněných v sekci Alternativy.
Existují speciální CNPJ pro vládní subjekty?
Ano. Vládní subjekty v Brazílii mají specifické vzory CNPJ. Například federální vládní subjekty často začínají na specifických číslicích. Náš generátor vytváří náhodné CNPJ a nevytváří specificky CNPJ pro vládní subjekty.
Odkazy
- Brazilská federální daňová služba (Receita Federal do Brasil) - Oficiální web
- "CNPJ - Cadastro Nacional da Pessoa Jurídica" - Wikipedia
- Brazilský občanský zákoník (Zákon č. 10.406/2002) - Právní rámec pro podnikatelské subjekty v Brazílii
- Normativní instrukce brazilské registrace podniků (IN RFB č. 1863/2018) - Předpisy o registraci CNPJ
Vyzkoušejte to nyní
Náš nástroj pro generování a validaci CNPJ pro Brazílii činí práci s těmito identifikačními čísly jednoduchou a efektivní. Ať už testujete aplikace, připravujete vzorová data nebo validujete existující CNPJ, tento nástroj poskytuje přímé řešení bez složitosti integrací API nebo pokročilých konfigurací.
Vygenerujte své první platné CNPJ nyní nebo validujte existující pomocí našeho jednoduchého rozhraní!
Zpětná vazba
Klikněte na toast se zpětnou vazbou a začněte dávat zpětnou vazbu o tomto nástroji
Související nástroje
Objevte další nástroje, které by mohly být užitečné pro váš pracovní postup