Hasilkan nombor CNPJ Brazil yang sah dan sahkan yang sedia ada dengan alat mudah ini yang direka untuk pemaju dan penguji yang bekerja dengan ID perniagaan Brazil.
Hasilkan nombor CNPJ Brazil yang sah untuk tujuan pengujian.
Semak jika nombor CNPJ Brazil adalah sah.
CNPJ Brazil (Cadastro Nacional da Pessoa JurĂdica) adalah nombor pengenalan unik yang diberikan kepada perniagaan dan entiti undang-undang di Brazil. Alat penjana dan pengesah CNPJ Brazil ini menyediakan cara yang mudah dan cekap untuk menjana nombor CNPJ yang sah untuk tujuan ujian dan mengesahkan nombor CNPJ yang sedia ada mengikut algoritma rasmi Brazil. Sama ada anda seorang pemaju yang menguji aplikasi yang mengendalikan data perniagaan Brazil, seorang profesional QA yang mencipta kes ujian, atau sesiapa yang bekerja dengan maklumat syarikat Brazil, alat ini memudahkan proses bekerja dengan nombor CNPJ.
Berbeza dengan nombor CNPJ sebenar yang dikeluarkan secara rasmi oleh Perkhidmatan Hasil Persekutuan Brazil (Receita Federal), CNPJ yang dijana oleh alat ini adalah sah dari segi matematik tetapi tidak didaftarkan kepada syarikat sebenar. Ini menjadikannya sempurna untuk senario ujian, data contoh, dan persekitaran pembangunan di mana anda memerlukan nombor CNPJ yang diformat dengan betul dan sah tanpa menggunakan pengenalan perniagaan yang sebenar.
CNPJ (Cadastro Nacional da Pessoa JurĂdica) adalah nombor pengenalan 14 digit yang diberikan kepada perniagaan dan entiti undang-undang oleh Perkhidmatan Hasil Persekutuan Brazil. Ia berfungsi sebagai setara Brazil dengan nombor pendaftaran syarikat atau ID cukai. Setiap perniagaan yang beroperasi secara sah di Brazil mesti mempunyai CNPJ, yang digunakan untuk:
CNPJ adalah pengenalan penting dalam ekosistem perniagaan Brazil dan muncul pada dokumen rasmi, kontrak, dan rekod kewangan.
CNPJ Brazil terdiri daripada 14 digit, biasanya diformat sebagai: XX.XXX.XXX/YYYY-ZZ
Struktur ini terbahagi kepada:
Sebagai contoh, CNPJ yang diformat dengan betul mungkin kelihatan seperti: 12.345.678/0001-95
Digit semak (dua nombor terakhir) dikira menggunakan algoritma matematik tertentu yang mengesahkan keaslian CNPJ. Algoritma ini memastikan bahawa nombor yang dijana secara rawak tidak dapat lulus pengesahan tanpa mengikuti kaedah pengiraan yang betul.
Algoritma pengesahan CNPJ menggunakan pengiraan bertimbang untuk menentukan digit semak. Berikut adalah cara ia berfungsi:
Untuk CNPJ menjadi sah, kedua-dua digit semak mesti sepadan dengan nilai yang dikira.
Alat Penjana dan Pengesah CNPJ Brazil kami menawarkan dua fungsi utama: menjana CNPJ yang sah dan mengesahkan nombor CNPJ yang sedia ada.
Untuk menjana CNPJ yang sah untuk tujuan ujian:
CNPJ yang dijana akan mengikuti semua peraturan pengesahan matematik CNPJ sebenar tetapi tidak didaftarkan dengan Perkhidmatan Hasil Persekutuan Brazil.
Untuk memeriksa sama ada CNPJ adalah sah dari segi matematik:
Pengesah memeriksa sama ada CNPJ mengikuti format yang betul dan jika digit semak sepadan dengan nilai yang dijangkakan mengikut algoritma pengesahan.
Alat penjana dan pengesah CNPJ Brazil ini sangat berguna dalam senario berikut:
Walaupun alat kami menyediakan penyelesaian berasaskan pelayar yang mudah untuk menjana dan mengesahkan CNPJ, terdapat beberapa alternatif bergantung kepada keperluan khusus anda:
Untuk pemaju yang mengintegrasikan pengesahan CNPJ terus ke dalam aplikasi, terdapat beberapa pustaka khusus bahasa yang tersedia:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Pustaka ini sering menyediakan fungsi tambahan seperti pemformatan, penguraian, dan pengesahan dokumen Brazil yang lain.
Untuk aplikasi yang memerlukan pengesahan tanpa melaksanakan algoritma:
Untuk tujuan pendidikan atau pengesahan sekali-sekala, anda boleh melaksanakan algoritma secara manual:
Walau bagaimanapun, pengiraan manual adalah terdedah kepada ralat dan tidak cekap untuk digunakan secara berkala.
Penjana dan pengesah CNPJ dalam alat ini dilaksanakan menggunakan JavaScript, menjadikannya cepat dan mampu berjalan sepenuhnya dalam pelayar anda tanpa menghantar data anda ke pelayan. Berikut adalah cara fungsi teras berfungsi:
1function generateCNPJ() {
2 // Jana 12 digit pertama secara rawak
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Kira digit semak pertama
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Kira digit semak kedua
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Format 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
1function validateCNPJ(cnpj) {
2 // Buang watak bukan nombor
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Semak jika mempunyai panjang yang betul
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Semak pola yang diketahui tidak sah (semua digit sama)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Tukar kepada array digit
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Semak digit pengesahan pertama
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Semak digit pengesahan kedua
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
1function formatCNPJ(cnpj) {
2 // Buang watak bukan nombor
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Format berdasarkan panjang
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
Fungsi teras ini boleh dilaksanakan dalam bahasa pengaturcaraan lain mengikuti logik yang sama. Berikut adalah contoh dalam Python dan Java:
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 # Jana 12 digit pertama secara rawak
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Kira digit semak pertama
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Kira digit semak kedua
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Format 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 # Buang watak bukan nombor
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Semak panjang
34 if len(cnpj) != 14:
35 return False
36
37 # Semak jika semua digit sama
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Tukar kepada senarai integer
42 digits = [int(d) for d in cnpj]
43
44 # Sahkan digit semak pertama
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Sahkan digit semak kedua
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
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 // Jana 12 digit pertama secara rawak
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Kira digit semak pertama
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Kira digit semak kedua
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Format 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 // Buang watak bukan nombor
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Semak panjang
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Semak jika semua digit sama
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 // Tukar kepada array integer
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 // Sahkan digit semak pertama
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Sahkan digit semak kedua
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Apabila menggunakan alat penjana dan pengesah CNPJ ini, ambil perhatian pertimbangan berikut:
CNPJ adalah nombor pendaftaran nasional untuk perniagaan dan entiti undang-undang di Brazil. Ia digunakan untuk tujuan cukai, pendaftaran perniagaan, membuka akaun bank, dan mengenal pasti syarikat dalam transaksi rasmi.
Tidak. CNPJ yang dijana oleh alat ini adalah sah dari segi matematik mengikut algoritma digit semak, tetapi ia tidak didaftarkan dengan Perkhidmatan Hasil Persekutuan Brazil dan tidak tergolong kepada syarikat sebenar.
Tidak. Untuk mendapatkan CNPJ yang sah untuk perniagaan, anda mesti mendaftar dengan Perkhidmatan Hasil Persekutuan Brazil (Receita Federal) mengikuti proses rasmi. CNPJ yang dijana adalah untuk tujuan ujian sahaja.
Untuk mengesahkan jika CNPJ didaftarkan kepada syarikat sebenar, anda perlu merujuk kepada pangkalan data Perkhidmatan Hasil Persekutuan Brazil. Alat kami hanya memeriksa sama ada CNPJ sah dari segi matematik, bukan jika ia didaftarkan secara rasmi.
CNPJ dengan semua digit yang sama (seperti 11.111.111/1111-11) secara automatik dianggap tidak sah, walaupun ia secara matematik lulus algoritma digit semak. Ini adalah peraturan yang ditetapkan oleh Perkhidmatan Hasil Persekutuan Brazil.
Tidak. Semua pemprosesan berlaku dalam pelayar anda, dan kami tidak menyimpan atau menghantar sebarang CNPJ yang anda jana atau sahkan.
Versi semasa alat ini menjana satu CNPJ pada satu masa. Untuk penjanaan secara pukal, anda mungkin ingin mempertimbangkan untuk menggunakan salah satu pustaka pengaturcaraan yang disebutkan dalam bahagian Alternatif.
Ini adalah format rasmi yang diperlukan oleh pihak berkuasa Brazil. Pengelompokan tertentu membantu mengenal pasti komponen berbeza CNPJ, seperti nombor asas dan pengenalan cabang.
Anda boleh melaksanakan algoritma pengesahan dalam bahasa pengaturcaraan pilihan anda menggunakan contoh kod yang disediakan dalam bahagian Pelaksanaan Teknikal, atau menggunakan salah satu pustaka yang disebutkan dalam bahagian Alternatif.
Ya. Entiti kerajaan di Brazil mempunyai pola CNPJ tertentu. Sebagai contoh, entiti kerajaan persekutuan sering bermula dengan digit tertentu. Penjana kami mencipta CNPJ secara rawak dan tidak secara khusus menjana CNPJ entiti kerajaan.
Alat Penjana dan Pengesah CNPJ Brazil kami menjadikan kerja dengan nombor pengenalan ini mudah dan cekap. Sama ada anda menguji aplikasi, menyediakan data contoh, atau mengesahkan CNPJ yang sedia ada, alat ini menyediakan penyelesaian yang langsung tanpa kerumitan integrasi API atau konfigurasi yang rumit.
Jana CNPJ yang sah pertama anda sekarang atau sahkan yang sedia ada menggunakan antara muka kami yang mudah!
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda