IBAN生成器和验证工具 - 测试银行数据
该工具可为10个欧洲国家生成符合ISO 13616标准格式的有效测试用IBAN国际银行账号,也可对已有IBAN执行MOD 97校验位算法以验证其合法性并定位错误位置。所有计算均在浏览器本地完成,不会将任何数据上传至服务器,适合银行软件开发、支付系统测试和金融数据校验等场景使用。
IBAN生成器和验证器
文档
IBAN 生成与验证工具
IBAN(国际银行账号)是用于在国际付款中识别银行账户的标准代码。此工具可为十个欧洲国家生成格式正确的随机测试 IBAN,并使用银行采用的 MOD 97 校验位公式检查现有 IBAN 是否有效。
什么是 IBAN?
在 IBAN 出现之前,每个国家都使用自己的银行账号格式。跨境付款经常失败,因为在一个国家有效的号码,到了另一个国家就毫无意义。国际标准化组织(ISO)制定了 IBAN 标准 ISO 13616 来解决这一问题。每个 IBAN 都带有一个国家代码和两位校验位,计算机据此可以在付款发出之前发现大多数输入错误。
IBAN 由三部分组成:
- 国家代码:两个字母,例如德国的
DE或英国的GB。 - 校验数字:使用下文介绍的 MOD 97 公式计算出的两位数字。
- 基本银行账号(BBAN):特定国家使用的代码段,通常包含银行代码和账号,有时还包含分行代码。
IBAN 最多可包含 34 个字符,但大多数欧洲的 IBAN 长度为 16 至 28 个字符。长度和内部结构完全取决于国家。德国的 IBAN 为 22 个字符:国家代码、两位校验位、8 位银行代码和 10 位账号。法国的 IBAN 为 27 个字符。
各国 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 |
| 荷兰(NL) | 18 | NL2!n4!a10!n | NL91ABNA0417164300 |
| 瑞士(CH) | 21 | CH2!n5!n12!c | CH9300762011623852957 |
| 奥地利(AT) | 20 | AT2!n5!n11!n | AT611904300234573201 |
| 比利时(BE) | 16 | BE2!n3!n7!n2!n | BE68539007547034 |
| 波兰(PL) | 28 | PL2!n8!n16!n | PL61109010140000071219812874 |
在结构列中,n 表示数字,a 表示字母,c 表示字母或数字。每个字母前的数字表示该部分包含的字符数。例如,英国格式中的 4!a6!n8!n 表示四个字母、六位数字,再加八位数字。
如何计算 IBAN 校验数字(MOD 97 公式)
校验位使用 ISO 7064 中的 MOD 97-10 方法计算。为新的 IBAN 生成校验位的步骤如下:
- 写下 BBAN,后接国家代码,再后接占位符
00。 - 将每个字母替换为数字:A = 10、B = 11,依此类推,直到 Z = 35。数字保持不变。
- 将整个结果视为一个长数字,求其除以 97 后的余数。
- 用 98 减去该余数。所得结果就是两位校验数字。如果结果只有一位,则在前面补零。
公式为:check digits = 98 − (N mod 97),其中 N 是根据第 1 步和第 2 步构成的数字字符串。
示例:计算德国 IBAN 的校验数字
取银行代码 37040044 和账号 0532013000。
- BBAN + 国家代码 +
00:370400440532013000+DE+00=370400440532013000DE00 - 替换字母:D = 13、E = 14,因此字符串变为
370400440532013000131400。 - 该数字除以 97 后的余数为 9。
- 98 − 9 = 89。
校验数字为 89,因此完整的 IBAN 是 DE89370400440532013000。
如何验证 IBAN
要检查现有 IBAN 是否有效,流程按相反方向进行:
- 删除所有空格,并将最前面的四个字符(国家代码和校验数字)移到字符串末尾。
- 使用相同的 A = 10 至 Z = 35 规则,将每个字母替换为数字。
- 求所得数字除以 97 后的余数。
- 只有当余数等于 1 时,该 IBAN 才有效。
这一规则可以发现几乎所有常见的数据输入错误,包括单个数字错误或两个数字对调,因为更改任何字符几乎总会改变余数。
在运行 MOD 97 校验之前,本工具还会验证国家代码是否属于其支持的十个国家之一,IBAN 的长度是否与该国要求的长度完全一致,以及是否只包含字母和数字。它不检查哪些位置是字母、哪些位置是数字。每项检查都有各自的错误提示,因此失败时会指出具体问题,而不是笼统的“无效”结果。
使用工具
生成器选项卡:从下拉菜单中选择国家,然后点击“生成 IBAN”。工具会按照该国的正确格式生成随机 BBAN,计算匹配的校验数字,并显示包含各部分明细的结果。“复制到剪贴板”按钮可复制完整的 IBAN。
验证器标签页:输入或粘贴 IBAN,有无空格均可。工具会在输入时检查,并显示是否有效。对于有效的 IBAN,会显示国家代码、校验位和账号。对于德国、英国和法国的 IBAN,还会拆分出银行代码;对于英国和法国的 IBAN,还会拆分出分行代码。
由于国家代码位于前两个字符中,验证器无需手动选择国家;它会读取代码并自动应用相应规则。
所有处理都在浏览器中进行。不会有任何 IBAN 被发送到服务器或存储在任何位置。
此工具对测试的用途
处理付款的软件需要使用行为类似真实 IBAN、但不关联真实账户的测试数据。随机数字字符串通常无法通过 MOD 97 校验,因此基于此类字符串的测试可能因错误原因失败:问题出在测试数据,而不是被测试代码中的漏洞。生成格式正确的 IBAN 可以避免这一问题,因为它能通过生产系统执行的相同验证,同时不与任何实际银行账户关联。
常见问题
IBAN 有什么用途? 它用于标识国际和国内转账所涉及的具体银行账户,其格式便于计算机在付款发出之前检查错误。
本工具生成的 IBAN 与真实银行账户有关联吗? 没有关联。它们是符合正确格式并通过 MOD 97 校验的随机号码,但不对应任何真实账户。只应用于测试、开发或教学,绝不能用于实际转账。
为什么不同国家的 IBAN 长度不同? 在 IBAN 标准把各国格式统一到同一套国家代码和校验位体系之前,每个国家都设计了自己的基本银行账号(BBAN)格式。ISO 13616 规定了每个国家的长度,但没有强制各国使用相同的内部结构。
IBAN 中的空格重要吗?
不重要。IBAN 为便于阅读,常按每四个字符一组显示,例如 DE89 3704 0044 0532 0130 00,但空格对验证没有影响。DE89370400440532013000 就是去掉空格后的同一个 IBAN。
本工具支持哪些国家? 十个欧洲国家:德国、英国、法国、西班牙、意大利、荷兰、瑞士、奥地利、比利时和波兰。
IBAN 与 SWIFT/BIC 代码有什么区别? SWIFT/BIC 代码标识一家银行或银行的某个分行。IBAN 标识该银行的某个具体账户。国际转账往往两者都需要:SWIFT/BIC 代码把付款送到正确的银行,IBAN 则把它送到正确的账户。
参考文献
- 德意志联邦银行。Der technische Standard (SEPA)。IBAN 和 BIC 技术标准(德语) — IBAN 最多有 34 个字符;德国的 IBAN 有 22 个:国家代码 DE、2 位校验位、8 位银行代码、10 位账号。
- 土耳其共和国中央银行。Communiqué on the International Bank Account Number。IBAN 通函 — 校验位采用 ISO 7064 的 MOD 97-10 方法:字母转换为 A = 10 至 Z = 35,用 98 减去余数,有效的 IBAN 余数为 1。