IBAN 検証・解析
国際銀行口座番号をオフラインで検証します。国コード、レジストリ桁数、ISO 7064 MOD 97-10 チェックディジットに加え、構成要素の分解と印刷用整形も行います。
この口座番号は構造として正しいか。 スペースの有無を問わず IBAN を貼り付けてください。検証はすべてブラウザー内で実行されます。SWIFT レジストリの国コード、総桁数、そして ISO 7064 MOD 97-10 チェックディジットの順に確認します。
国際銀行口座番号をオフラインで検証します。国コード、レジストリ桁数、ISO 7064 MOD 97-10 チェックディジットに加え、構成要素の分解と印刷用整形も行います。
この口座番号は構造として正しいか。 スペースの有無を問わず IBAN を貼り付けてください。検証はすべてブラウザー内で実行されます。SWIFT レジストリの国コード、総桁数、そして ISO 7064 MOD 97-10 チェックディジットの順に確認します。
IBAN は新種の口座番号ではありません。従来からある国内口座番号(BBAN と呼ばれます)の先頭に 4 文字を付け足しただけのものです。すなわち ISO 3166 の 2 文字国コードと 2 桁のチェックディジットです。その 4 文字より後ろは各国の銀行システムがもともと使っていた番号そのままで、桁数が国ごとに大きく違うのはこのためです。ノルウェーの IBAN は 15 文字、マルタは 31 文字で、どちらも完全に正しい形です。
この桁数の違いこそが最初の実質的な検証であり、最も見落とされやすい段階でもあります。各国は正確な総桁数を SWIFT に登録しており、これは上限ではなく固定値です。ドイツの IBAN は常に 22 文字です。DE で始まる 21 文字の文字列を受け取ったら、チェックディジットが何を言おうと誤りです。文字列を短くしてしまう誤りは、欠落した文字を見ることのないチェックサムでは検出できないからです。国別桁数を先に確認すると、汎用的なチェックサム失敗よりはるかに有用なエラーメッセージも出せます。
チェック方式は ISO 7064 由来で、発想は非常に洗練されています。先頭 4 文字を末尾へ移し、各英字を A=10 から Z=35 の数値に置き換え、全体を 1 つの巨大な整数として読みます。その整数を 97 で割った余りがちょうど 1 なら合格です。
問題は、この数がどの言語のネイティブ整数型よりもはるかに大きく、しばしば 80 桁を超えることです。多倍長ライブラリに頼らず、実装は分割して剰余を取ります。文字列を左から右へたどり、1 桁処理するごとに 97 での剰余だけを保持するのです。剰余演算はこの桁ごとの構成に対して分配されるため、最終的な余りは完全な数値から計算した場合と一致し、コストはメモリ確保なしの 1 回の走査だけで済みます。本ツールもまさにこの方式です。
MOD 97-10 が採用されたのは、わずか 2 文字のチェックとしては異例に強力だからです。1 文字の置換はすべて、隣接 2 文字の入れ替えもすべて、さらに長い並べ替えの圧倒的多数を検出します。検出できない誤りのパターンは十分に稀で、残るリスクは「口座がそもそも存在しない」ことのほうが支配的です。
構造的に有効であることは、存在することではありません。チェックディジットが正しい IBAN でも、解約済みの口座、一度も開設されなかった口座、あるいは合併で消えた銀行を指していることがあります。送金が届くと確認する唯一の方法は、実際に送金するか、銀行が提供する照合サービスを使うことです。検証は入力時のタイプミスを捕まえる手段であって、受取人が実在する証明ではありません。
書式にも注意が必要です。レジストリが定める電子形式はスペースを含まない連続した文字列で、支払ファイルへの記載やデータベースへの保存はこの形式で行わなければなりません。4 文字ごとに区切る形式は紙面印刷専用で、長い文字列を人が正確に書き写すためのものです。入力時に正規化し、保存はスペースなし、表示のときだけ区切りを付け直してください。