🛠️

Whiz Tools

Build • Create • Innovate

ブラジルCNPJ生成および検証ツール

このシンプルなツールを使用して、ブラジルのビジネスIDで作業している開発者やテスター向けに、有効なブラジルCNPJ番号を生成し、既存のものを検証します。

ブラジルCNPJジェネレーターおよびバリデーター

CNPJジェネレーター

テスト目的のために有効なブラジルのCNPJ番号を生成します。

CNPJバリデーター

ブラジルのCNPJ番号が有効かどうかを確認します。

📚

ドキュメント

ブラジルのCNPJ生成および検証ツール

はじめに

**ブラジルのCNPJ(Cadastro Nacional da Pessoa Jurídica)**は、ブラジルの企業や法的実体に割り当てられるユニークな識別番号です。このブラジルのCNPJ生成および検証ツールは、テスト目的で有効なCNPJ番号を生成し、公式のブラジルのアルゴリズムに従って既存のCNPJ番号を検証するためのシンプルで効率的な方法を提供します。ブラジルのビジネスデータを扱うアプリケーションをテストしている開発者、テストケースを作成しているQA専門家、またはブラジルの企業情報に関わるすべての人にとって、このツールはCNPJ番号を扱うプロセスを簡素化します。

このツールによって生成されるCNPJは、ブラジル連邦税務署(Receita Federal)によって正式に発行される実際のCNPJ番号とは異なり、数学的には有効ですが、実際の企業に登録されていません。これにより、実際のビジネス識別子を使用せずに、適切にフォーマットされた有効なCNPJ番号が必要なテストシナリオ、サンプルデータ、および開発環境に最適です。

CNPJとは?

CNPJ(Cadastro Nacional da Pessoa Jurídica)は、ブラジル連邦税務署によって企業や法的実体に割り当てられる14桁の識別番号です。これは、企業登録番号または税IDのブラジル版に相当します。ブラジルで合法的に運営されているすべてのビジネスはCNPJを持っている必要があり、これは以下の目的で使用されます:

  • 税報告およびコンプライアンス
  • 政府機関へのビジネス登録
  • 銀行口座の開設
  • 請求書および領収書の発行
  • 政府の入札への参加
  • 商品の輸出入

CNPJはブラジルのビジネスエコシステムにおける重要な識別子であり、公式文書、契約、および財務記録に表示されます。

CNPJの構造とフォーマット

ブラジルのCNPJは14桁で構成され、通常は次のようにフォーマットされます:XX.XXX.XXX/YYYY-ZZ

構造は次のように分解されます:

  1. 最初の8桁(XX.XXX.XXX):企業に割り当てられた基本番号
  2. スラッシュの後の4桁(YYYY):支店識別子(本社の場合は0001、他の番号は支店用)
  3. 最後の2桁(ZZ):検証用のチェック桁

例えば、適切にフォーマットされたCNPJは次のようになります:12.345.678/0001-95

チェック桁(最後の2桁)は、CNPJの真正性を検証するための特定の数学的アルゴリズムを使用して計算されます。このアルゴリズムにより、ランダムに生成された番号が正しい計算方法に従わなければ検証を通過できないようになっています。

CNPJ検証の仕組み

CNPJ検証アルゴリズムは、チェック桁を決定するために重み付け計算を使用します。以下にその方法を示します:

最初のチェック桁の計算

  1. 最初の12桁の各数字を重みのシーケンスで掛け算します:5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. これらの掛け算の結果を合計します
  3. この合計を11で割った余りを計算します
  4. 余りが2未満の場合、最初のチェック桁は0です。それ以外の場合は、11から余りを引いた値になります

2番目のチェック桁の計算

  1. 最初のチェック桁を含む最初の13桁の各数字を重みのシーケンスで掛け算します:6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. これらの掛け算の結果を合計します
  3. この合計を11で割った余りを計算します
  4. 余りが2未満の場合、2番目のチェック桁は0です。それ以外の場合は、11から余りを引いた値になります

CNPJが有効であるためには、両方のチェック桁が計算された値と一致する必要があります。

このツールの使い方

私たちのブラジルのCNPJ生成および検証ツールは、主に2つの機能を提供します:有効なCNPJを生成することと、既存のCNPJ番号を検証することです。

CNPJの生成

テスト目的で有効なCNPJを生成するには:

  1. ツールの「CNPJ生成器」セクションに移動します
  2. 「CNPJを生成」ボタンをクリックします
  3. 数学的に有効なCNPJがフォーマットされた表示に表示されます
  4. 「コピー」ボタンを使用して生成されたCNPJをクリップボードにコピーします

生成されたCNPJは、実際のCNPJの数学的検証ルールに従いますが、ブラジル連邦税務署には登録されていません。

CNPJの検証

CNPJが数学的に有効かどうかを確認するには:

  1. ツールの「CNPJ検証器」セクションに移動します
  2. 検証したいCNPJを入力フィールドに入力します
    • ツールは、フォーマット(ピリオド、スラッシュ、ハイフン)ありまたはなしのCNPJを受け付けます
  3. 「検証」ボタンをクリックします
  4. ツールは、CNPJが検証アルゴリズムに基づいて有効か無効かを表示します

検証器は、CNPJが正しいフォーマットに従っているか、チェック桁が期待される値と一致しているかを確認します。

使用例

このブラジルのCNPJ生成および検証ツールは、特に以下のシナリオで役立ちます:

ソフトウェア開発とテスト

  • テストデータの作成:実際の企業識別子を使用せずにテストデータベースを埋めるために有効なCNPJを生成します
  • ユニットテスト:既知の有効および無効の例を使用してCNPJ処理関数を検証します
  • QAテスト:CNPJ入力を必要とするフォームやインターフェースのテストケースを作成します
  • 統合テスト:ブラジルの政府サービスや金融機関とデータを交換するシステムをテストします

教育とトレーニング

  • CNPJフォーマットの学習:ブラジルのビジネス識別子がどのように構成されているかを理解します
  • アルゴリズムの研究:検証のチェック桁がどのように機能するかを実際に調べます
  • データ検証技術:データ検証要件の実世界の例を学びます

データ処理

  • データクリーニング:既存のデータセット内のCNPJを検証して潜在的なエラーを特定します
  • フォーム検証:CNPJ入力のクライアント側またはサーバー側の検証を実装します
  • データ匿名化:分析のためにデータセットを準備する際に、実際のCNPJを有効な生成されたものに置き換えます

国際ビジネス

  • 市場参入準備:ブラジルのビジネス識別要件を理解します
  • 文書準備:ブラジル向けのビジネス文書を準備する際に適切なフォーマットを確保します
  • コンプライアンス確認:収集したCNPJ番号が数学的に有効であることを確認します

代替手段

私たちのツールは、CNPJを生成および検証するためのシンプルでブラウザベースのソリューションを提供しますが、特定のニーズに応じた代替手段がいくつかあります:

プログラミングライブラリ

CNPJ検証をアプリケーションに直接統合する開発者向けに、いくつかの言語特有のライブラリが利用可能です:

  • JavaScriptcpf_cnpj.jsvalidator.js
  • Pythonpython-cnpjvalidate-docbr
  • PHPbrazilianutilsrespect/validation
  • Javacaelum-stellacommons-validator
  • Rubycpf_cnpjbrazilian-rails

これらのライブラリは、フォーマット、パース、および他のブラジルの文書の検証など、追加の機能を提供することが多いです。

APIサービス

検証を実装せずに行いたいアプリケーション向け:

  • ブラジル政府のAPI(登録が必要)
  • CNPJチェックを含む商業検証API
  • 公式データベースに対して検証するビジネス情報サービス

手動計算

教育目的や一時的な検証のために、アルゴリズムを手動で適用することができます:

  1. CNPJの最初の12桁を抽出します
  2. 前述のように重み付け計算を実行します
  3. 計算されたチェック桁を実際のチェック桁と比較します

ただし、手動計算はエラーが発生しやすく、定期的な使用には非効率的です。

技術的実装

このツールの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  // 2番目のチェック桁を計算
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  // 2番目の検証桁をチェック
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    # 2番目のチェック桁を計算
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    # 2番目のチェック桁を検証
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        // 2番目のチェック桁を計算
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        // 2番目のチェック桁を検証
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を生成できますか?

現在のバージョンのツールでは、一度に1つのCNPJを生成します。バルク生成が必要な場合は、代替手段のセクションに記載されているプログラミングライブラリの1つを使用することを検討してください。

フォーマットXX.XXX.XXX/XXXX-XXはなぜ重要ですか?

これは、ブラジルの当局によって要求される公式フォーマットです。特定のグループ化は、CNPJの異なるコンポーネント(基本番号と支店識別子など)を特定するのに役立ちます。

プログラムでCNPJを検証するにはどうすればよいですか?

技術的実装セクションに提供されたコード例を使用して、好みのプログラミング言語で検証アルゴリズムを実装するか、代替手段セクションに記載されているライブラリを使用できます。

政府機関のための特別なCNPJはありますか?

はい。ブラジルの政府機関には特定のCNPJパターンがあります。たとえば、連邦政府機関は特定の数字で始まることが多いです。私たちの生成器はランダムなCNPJを作成し、政府機関のCNPJを特に生成することはありません。

参考文献

  1. ブラジル連邦税務署(Receita Federal do Brasil) - 公式ウェブサイト
  2. 「CNPJ - Cadastro Nacional da Pessoa Jurídica」 - ウィキペディア
  3. ブラジル民法(法律第10.406/2002) - ブラジルにおける企業の法的枠組み
  4. ブラジルのビジネス登録に関する規則(IN RFB第1863/2018) - CNPJ登録に関する規則

今すぐ試してみてください

私たちのブラジルのCNPJ生成および検証ツールは、これらの識別番号を扱うのをシンプルかつ効率的にします。アプリケーションをテストしたり、サンプルデータを準備したり、既存のCNPJを検証したりする際に、このツールはAPI統合や高度な設定の複雑さなしに、簡単なソリューションを提供します。

今すぐ最初の有効なCNPJを生成するか、シンプルなインターフェースを使用して既存のCNPJを検証してください!