テストおよび検証のためのIBAN生成および検証ツール
ランダムな形式準拠のIBANを作成するか、既存のIBANを検証するためのシンプルなツールです。金融アプリケーション、銀行ソフトウェア、教育目的のテストに最適です。
IBANジェネレーター&バリデーター
ドキュメント
IBAN生成および検証ツール
はじめに
国際銀行口座番号(IBAN)生成および検証ツールは、金融アプリケーション、銀行ソフトウェア、教育コンテキストでのテストと検証を目的とした包括的なツールです。このユーザーフレンドリーなアプリケーションは、ランダムでありながら形式に準拠したIBANを生成する機能と、ユーザーが入力したIBANの構造的完全性を検証する機能の2つの重要な機能を提供します。金融ソフトウェアをテストしている開発者、銀行アプリケーションを検証しているQAスペシャリスト、国際銀行基準を説明している教育者であっても、このツールは複雑な設定やサードパーティの統合を必要とせず、簡単なソリューションを提供します。
IBAN(国際銀行口座番号)は、国際的に標準化された口座識別子であり、国境を越えた取引を円滑にし、国際送金の誤りを減らすために使用されます。各IBANは、国コード、チェックデジット、および国ごとの形式に従った基本銀行口座番号(BBAN)で構成されています。当ツールは複数の国の形式をサポートし、生成されたすべてのIBANがISO 13616標準に指定されたMOD 97検証アルゴリズムを通過することを保証します。
IBANの仕組み
IBANの構造と形式
IBANは最大34文字の英数字で構成されますが、正確な長さは国によって異なります。標準の構造は次のようになります。
- 国コード: 2文字のISO 3166-1アルファベット-2コード(例:DEはドイツ、GBはイギリス)
- チェックデジット: IBANを検証するためにMOD 97アルゴリズムを使用して計算された2桁の数字
- 基本銀行口座番号(BBAN): 国ごとの形式で、以下を含む場合があります:
- 銀行コード
- 支店コード(ソートコード)
- 口座番号
- 国内チェックデジット
例えば、ドイツのIBANはDE2!n8!n10!n
の構造に従います:
DE
は国コード2!n
は2桁の数字のチェックデジットを表します8!n
は8桁の銀行コードを表します10!n
は10桁の口座番号を表します
異なる国には異なるBBAN形式があり、IBANの長さが異なります:
国名 | 長さ | 構造 | 例 |
---|---|---|---|
ドイツ (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
英国 (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
フランス (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
スペイン (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
イタリア (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
IBAN検証アルゴリズム
IBAN検証プロセスは、ISO 7064標準に指定されたMOD 97アルゴリズムを使用します。以下の手順で行います:
- 最初の4文字(国コードとチェックデジット)をIBANの末尾に移動します
- すべての文字を数字に変換します(A=10, B=11, ..., Z=35)
- 得られた数の97での剰余を計算します
- 余りが1であれば、IBANは有効です
数学的には、次のように表されます:
当ツールの検証機能は、このアルゴリズムを実装して、ユーザーが入力したIBANの構造的完全性を確認します。
ツールの機能
IBAN生成器
IBAN生成器は、テスト目的のためにランダムでありながら有効なIBANを生成します。主な機能は次のとおりです:
- 国の選択: ドイツ、英国、フランス、スペイン、イタリア、オランダ、スイス、オーストリア、ベルギー、ポーランドなど、複数のサポートされている国から選択できます
- 形式準拠: 生成されたすべてのIBANは、国ごとの形式に従い、MOD 97検証を通過します
- ワンクリック生成: ボタンを1回クリックするだけで有効なIBANを即座に生成します
- クリップボードにコピー: 生成されたIBANを簡単にコピーしてテストシナリオで使用できます
- 視覚的表現: IBANの構成要素(国コード、チェックデジット、銀行の詳細)の色分けされた内訳を表示します
生成器は次の手順でIBANを生成します:
- 適切な国の形式を選択します
- BBAN部分のランダムな数字を生成します
- MOD 97アルゴリズムを使用して正しいチェックデジットを計算します
- 完全なIBANを組み立てます
IBAN検証器
IBAN検証器は、ユーザーが入力したIBANの構造的完全性をチェックします。主な機能は次のとおりです:
- 形式検証: IBANが正しい国ごとの形式に従っているかを確認します
- MOD 97検証: 標準アルゴリズムを使用してチェックデジットを検証します
- 詳細な内訳: 有効なIBANの構成要素(国コード、チェックデジット、銀行コード、口座番号)を表示します
- エラー識別: 無効なIBANに対して具体的なエラーメッセージを提供します
- フォーマット支援: 入力されたIBANを自動的にフォーマットして、より読みやすくします
検証器は複数のチェックを実行します:
- 国コードがサポートされているかを確認します
- IBANの長さが国ごとの要件に対して正しいかを確認します
- 文字の種類(正しい位置にある文字と数字)を検証します
- MOD 97チェックを実行してチェックデジットを検証します
ステップバイステップガイド
IBANを生成する
- 生成タブにアクセス: 「生成」タブをクリックします(デフォルトで選択されています)
- 国を選択: ドロップダウンメニューから希望の国を選択します
- IBANを生成: 「IBANを生成」ボタンをクリックします
- 結果を表示: 生成されたIBANが下に表示され、その構成要素の視覚的内訳が表示されます
- クリップボードにコピー: 「クリップボードにコピー」ボタンをクリックして、他の場所で使用するためにIBANをコピーします
IBANを検証する
- 検証タブにアクセス: 「検証」タブをクリックします
- IBANを入力: 入力フィールドにIBANを入力または貼り付けます
- スペースとフォーマットは自動的に処理されます
- ツールはフォーマットされた(スペースあり)IBANとフォーマットされていないIBANの両方を受け付けます
- 検証結果を表示: ツールは入力中にIBANを自動的に検証します
- 詳細を確認: 有効なIBANの場合、構成要素の内訳が表示されます
- エラーを確認: 無効なIBANの場合、具体的なエラーメッセージが問題を特定するのに役立ちます
使用例
IBAN生成および検証ツールは、さまざまなドメインで複数の目的に役立ちます:
ソフトウェア開発とテスト
- APIテスト: 実際の口座番号を使用せずに金融APIをテストするために有効なIBANを生成します
- フォーム検証: ウェブフォームやアプリケーションのIBAN検証ロジックをテストします
- エッジケーステスト: アプリケーションが異なる国のIBANをどのように処理するかを検証します
- 回帰テスト: ソフトウェアの更新後にIBANの処理が正しいことを確認します
金融アプリケーション開発
- 決済システム: 国際決済処理機能をテストします
- 銀行ソフトウェア: IBANの解析と検証コンポーネントを検証します
- フィンテックアプリケーション: 国際銀行基準への準拠を確保します
- データベースシステム: IBANデータの保存と取得をテストします
教育目的
- 銀行基準教育: IBANがどのように構成され、検証されるかを示します
- 金融リテラシー: 学生に国際銀行識別子について教えます
- コーディングチュートリアル: 検証アルゴリズムや金融データ処理の例として使用します
- 技術文書: APIドキュメントのための例IBANを生成します
データ移行と変換
- レガシーシステム移行: システムをアップグレードする際のIBAN変換プロセスをテストします
- データ匿名化: 開発環境で実際の口座番号を置き換えるためにテストIBANを生成します
- データベースシーディング: 金融アプリケーションデータベースの現実的なテストデータを作成します
代替手段
私たちのIBAN生成および検証ツールは、テスト目的のための簡素化された体験を提供しますが、考慮すべき代替アプローチもあります:
商業銀行API
- 利点: 実際の銀行登録に対する追加の検証を提供し、より包括的な金融サービスを提供します
- 欠点: 通常、サブスクリプション、APIキー、統合作業が必要であり、使用制限がある場合があります
プログラミング言語用のIBANライブラリ
- 利点: コードベースに直接統合でき、プログラム的なアクセスを提供します
- 欠点: 実装するための開発作業が必要であり、基準に準拠するために定期的な更新が必要です
公式銀行検証器
- 利点: 金融機関によって提供され、特定の国に対して高い精度を持ちます
- 欠点: 通常、特定の国に制限されており、生成機能をサポートしていない場合があります
手動計算
- 利点: 基礎となるアルゴリズムを理解するのに役立ち、外部ツールに依存しません
- 欠点: 時間がかかり、人為的なエラーが発生しやすく、スケールでのテストには不適切です
私たちのツールは、複雑な統合や有料サブスクリプションを必要とせず、生成と検証の両方の機能を提供することで、これらの代替手段のギャップを埋めます。
よくある質問
IBANとは何ですか?
IBAN(国際銀行口座番号)は、国境を越えた銀行口座を特定するために開発された国際的な標準番号システムです。これは、国際的な取引をエラーなく行うために国際標準化機構(ISO)によって設立されました。
このIBAN生成器の精度はどのくらいですか?
IBAN生成器は、ISO 13616標準に指定されたMOD 97チェックアルゴリズムを通過する構造的に有効なIBANを生成します。生成されたIBANは数学的に有効ですが、ランダムであり、実際の銀行口座にリンクされていないため、テストには最適ですが、実際の取引には使用できません。
このツールはどの国をサポートしていますか?
このツールは、ドイツ、英国、フランス、スペイン、イタリア、オランダ、スイス、オーストリア、ベルギー、ポーランドのIBAN形式を現在サポートしています。これらは、ヨーロッパで最も一般的に使用されるIBAN形式をカバーしています。
生成されたIBANを実際の取引に使用できますか?
いいえ。この生成器によって作成されたIBANは構造的に有効ですが、ランダムに生成されたものであり、実際の銀行口座に接続されていません。これらはテスト、教育、またはデモ目的でのみ使用してください。
IBANの検証はどのように機能しますか?
検証器はIBANのいくつかの側面をチェックします:
- 国コードの有効性
- 指定された国に対する正しい長さ
- 文字の種類の有効性(正しい位置にある文字と数字)
- ISO標準に従ったMOD 97チェックデジットの検証
IBANにスペースは重要ですか?
いいえ。IBANは通常、可読性のためにスペースを含む(通常は4文字ごとにグループ化)形式で表示されますが、検証中にスペースは無視されます。当ツールは、フォーマットされたIBANとフォーマットされていないIBANの両方を処理します。
このツールを使用する際に私のIBANデータは保存または共有されますか?
いいえ。このツールは完全にブラウザ内で動作します。IBANデータはサーバーに送信されず、保存されず、第三者と共有されることはありません。あなたのデータはプライベートで安全です。
ドロップダウンリストにない国のIBANを検証できますか?
現在、このツールはドロップダウンにリストされているサポートされている国のIBANのみを検証します。追加の国の検証が必要な場合は、フィードバックフォームを通じてお知らせください。
有効に見えるIBANが検証に失敗するのはなぜですか?
IBANが検証に失敗する理由はいくつかあります:
- チェックデジットが不正確
- 指定された国に対して長さが間違っている
- 特定の位置に無効な文字が含まれている
- タイプミスや転置エラー
- ツールがサポートしていない国コード
問題を報告したり、改善を提案したりするにはどうすればよいですか?
ツールの改善に向けたフィードバックを歓迎します。ページの下部にあるリンクからアクセスできるフィードバックフォームを使用して、問題を報告したり、改善案を提案したりしてください。
技術的実装
IBANの検証と生成を独自のアプリケーションに実装したい開発者向けに、さまざまなプログラミング言語でのコード例を以下に示します:
IBAN検証
1function validateIban(iban) {
2 // スペースを削除し、大文字に変換
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // 基本的な形式チェック
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // 最初の4文字を末尾に移動
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 // 文字を数字に変換
13 const converted = rearranged.split('').map(char => {
14 if (/[A-Z]/.test(char)) {
15 return (char.charCodeAt(0) - 55).toString();
16 }
17 return char;
18 }).join('');
19
20 // mod 97を計算
21 let remainder = 0;
22 for (let i = 0; i < converted.length; i++) {
23 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
24 }
25
26 return remainder === 1;
27}
28
29// 使用例
30console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
31console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
32console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (無効なチェックデジット)
33
1def validate_iban(iban):
2 # スペースを削除し、大文字に変換
3 iban = iban.replace(' ', '').upper()
4
5 # 基本的な形式チェック
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # 最初の4文字を末尾に移動
10 rearranged = iban[4:] + iban[:4]
11
12 # 文字を数字に変換(A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # 98からmod 97を計算
21 return int(converted) % 97 == 1
22
23# 使用例
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (無効なチェックデジット)
27
1public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // スペースを削除し、大文字に変換
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // 基本的な形式チェック
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // 最初の4文字を末尾に移動
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // 文字を数字に変換
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // BigIntegerを使用してmod 97を計算
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35
IBAN生成
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // 必要に応じて他の国を追加
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`国コード ${countryCode} はサポートされていません`);
11 }
12
13 // 国の形式に基づいてランダムなBBANを生成
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // 数字を生成
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // アルファベットを生成
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // アルファベットと数字を生成
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // チェックデジットを計算
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // チェックデジット計算のための初期IBANを作成
55 const initialIban = countryCode + '00' + bban;
56
57 // 再配置し、文字を数字に変換
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // 98からmod 97を計算
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// 使用例
77console.log(generateIban('DE')); // 有効なドイツのIBANを生成
78console.log(generateIban('GB')); // 有効な英国のIBANを生成
79
1import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # 必要に応じて他の国を追加
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"国コード {country_code} はサポートされていません")
14
15 # 国の形式に基づいてランダムなBBANを生成
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # 数字
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # アルファベット
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # アルファベットと数字
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # チェックデジットを計算
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # チェックデジット計算のための文字列を作成
40 check_string = bban + country_code + '00'
41
42 # 文字を数字に変換(A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # 98からmod 97を計算
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# 使用例
57print(generate_iban('DE')) # 有効なドイツのIBANを生成
58print(generate_iban('GB')) # 有効な英国のIBANを生成
59
参考文献
- ISO 13616-1:2007 - "金融サービス - 国際銀行口座番号(IBAN) - 第1部:IBANの構造"
- ヨーロッパ銀行基準委員会(ECBS) - "IBAN:国際銀行口座番号"
- SWIFT - "IBANレジストリ"
- ヨーロッパ決済評議会 - "IBANおよび債権者識別子"
- 国際決済銀行 - "決済、クリアリングおよび決済システム"
- 欧州中央銀行 - "単一ユーロ決済圏(SEPA)"
- ISO 9362 - "銀行 - 銀行電信メッセージ - ビジネス識別コード(BIC)"
- ISO 7064 - "情報技術 - セキュリティ技術 - チェック文字システム"
結論
IBAN生成および検証ツールは、国際銀行識別子に関連するテストおよび教育目的のためのシンプルでありながら強力なソリューションを提供します。生成と検証の両方の機能をユーザーフレンドリーなインターフェースで提供することで、複雑な設定やサードパーティの統合を必要としません。
金融アプリケーションを開発したり、決済システムをテストしたり、国際銀行基準について学んだりする場合でも、このツールはIBANを扱うための簡単な方法を提供します。包括的な検証により、生成されたすべてのIBANが構造的に健全で国際基準に準拠していることが保証されます。
今すぐIBANを生成または検証して、ツールの機能を体験してください!
フィードバック
フィードバックトーストをクリックして、このツールについてのフィードバックを始めてください
関連ツール
ワークフローに役立つかもしれない他のツールを発見してください