CodeKitHub
代码工具

虚假 IBAN 生成器

最后更新:

生成格式正确、能通过标准校验的 IBAN 号码,但它们并不关联任何真实银行账户。选择国家,设定需要的数量(1–20 个),即可得到使用真正的 ISO 7064 MOD-97 算法计算出正确校验位的 IBAN。免责声明:这些均为虚构号码,仅用于软件测试和开发目的 —— 切勿用于实际转账、付款或任何真实金融交易。

免责声明:这些 IBAN 仅用于软件测试和开发目的。它们是格式有效、校验位正确的虚构号码,并非真实银行账户 —— 请勿用于实际转账或任何真实交易。

工具介绍

IBAN(国际银行账号)是由 ISO 13616 标准定义的银行账户标识符,由 2 位国家代码、2 位校验数字和特定国家格式的基本银行账号(BBAN)组成。不同国家的长度和结构各不相同 —— 德国 IBAN 为 22 位,意大利 IBAN 为 27 位。

这 2 位校验数字并非随机产生:它们是通过 ISO 7064 MOD-97-10 算法根据 IBAN 其余部分计算得出的,这也是所有真实银行系统在发起转账前用来发现输入错误的同一套校验方式。

本工具随机生成 BBAN 部分,再用银行实际使用的同一套 MOD-97 算法进行计算 —— 因此结果在外观和校验上都与真实 IBAN 无异,但其中的数字是编造出来的,不对应任何真实账户。

为什么使用它?

  • 无需真实客户银行信息即可测试表单、支付流程和 IBAN 校验逻辑。
  • 校验位通过正确的 MOD-97 算法计算,能通过与真实 IBAN 相同的校验逻辑。
  • 覆盖 8 个国家的不同格式:德国、法国、英国、西班牙、意大利、荷兰、波兰、土耳其。
  • 一次最多生成 20 个,方便填充测试数据库或演示环境。
  • 完全在浏览器本地运行 —— 生成的数据不会被发送或存储到任何地方。

使用方法

  1. 从下拉菜单中选择国家。
  2. 设置需要生成的数量(1–20)。
  3. 点击“生成 IBAN”。
  4. 点击“复制全部”以复制完整列表。

示例

输入

国家:DE,数量:2

输出

DE89 3704 0044 0532 0130 00
DE87 1009 0000 5628 8283 60

两个校验位都计算正确,因此每个 IBAN 都能通过校验 —— 但账号本身是随机生成的虚构数字。

常见使用场景

  • QA 与表单测试:验证注册或支付表单能否正确接受、拒绝并格式化多个国家的 IBAN 输入。
  • 填充测试数据库:批量生成看似真实的 IBAN 值,为预发布环境填充数据,同时避免暴露真实财务信息。
  • 演示与销售环境:让产品演示中的数据看起来真实,同时不承担任何财务风险。
  • 校验逻辑单元测试:使用已知有效的虚假 IBAN(以及故意破坏格式的变体)来测试你自己的 MOD-97 校验逻辑。
  • 前端开发:在真实后端接口就绪之前,先模拟包含 IBAN 字段的 API 响应。

重要提示:不可用于真实交易

本工具生成的 IBAN 在结构上有效,但完全是虚构的。国家代码和校验位由算法保证正确,但 BBAN 内的银行代码和账号都是随机数字,与任何真实金融机构或账户持有人无关。

请勿将这些号码填入真实的支付表单、发票、汇款指令,或任何可能真正发生资金流动的地方。它们的存在仅为帮助开发者和测试人员安全地测试处理 IBAN 的代码。

校验算法的实际原理

IBAN 校验遵循 ISO 7064 的 MOD-97-10 方案:将开头 4 位字符(国家代码 + 校验位)移到字符串末尾,并用“00”替代原位置,再将每个字母转换为两位数字(A=10 到 Z=35),把结果视为一个非常大的整数。对于有效的 IBAN,该整数对 97 取模应等于 1。

生成有效 IBAN 时,工具反其道而行之:先构造一个随机的 BBAN,再拼接国家代码和“00”,计算对 97 取模的余数,最后用 98 减去该余数得到校验位。这与真实银行软件使用的算法完全相同 —— 唯一虚构的部分是账户数据本身。

常见问题

这些是真实的银行账户吗?

不是。此工具仅用于软件测试和开发。生成的每一个 IBAN 都是随机生成的虚构号码,不对应任何真实银行账户。切勿将其用于实际转账、开票或交易。

既然是假的,为什么能通过校验?

因为校验位是用真实银行采用的同一套 ISO 7064 MOD-97 公式计算出来的。校验只能确认校验位与号码其余部分在数学上一致,并不能(也无法)确认该账户是否真实存在。

这个工具适合什么场景?

适用于测试 IBAN 输入字段的 QA 场景、为预发布或测试数据库填充看似真实的支付数据、填充演示环境,以及对 IBAN 校验或格式化代码进行单元测试。

MOD-97 校验位是如何计算的?

先将 BBAN、国家代码和占位符“00”重新排列,再把字母转换为数字(A=10 … Z=35),最后用分块运算对整串数字取模 97。校验位等于 98 减去该余数,并补齐为两位数。

我生成的数据会被存储吗?

不会。生成过程完全在浏览器本地进行,账号数字使用 Math.random() 生成。任何数据都不会被传输、记录或存储到服务器。

相关工具