随机IBAN生成器

生成符合 mod97 校验的国际银行账号(IBAN):选好国家码后,随机本国 BBAN,再把国家码字母转数字加 00 占位整体做 mod97,算出两位校验位。打开页面已带一组德国(DE)示例,换国家、改数量或种子后按回车立即重算,结果按 4 位分组查看、导出或复制。

一次最多 100 个;数量改变会按当前国家与种子重算整批。
同一国家 + 同一种子 = 同一批账号,便于复现与对照。

提示:数量框或种子框按裸 Enter 触发重算;切换国家后立即重算。本页仅做格式演示,非真实账户。

IBAN 生成对照表(国家 + 校验位 + 完整账号)

序号国家校验位完整 IBAN(每 4 位分组)
1DE82DE82 6201 0648 3107 0756 53
2DE68DE68 5245 7701 0066 0928 32
3DE36DE36 0976 4904 1365 5532 15
4DE67DE67 9563 5926 1732 2524 56
5DE54DE54 1736 7648 7048 2700 28
6DE91DE91 5349 0775 9469 0952 87
7DE85DE85 1951 5811 2171 2849 36
8DE69DE69 7969 8092 0132 6936 24
9DE18DE18 8192 1979 5705 0783 96
10DE35DE35 5295 7195 0251 6132 50
11DE77DE77 3341 7014 5976 6887 25
12DE51DE51 6081 4682 4075 9108 86

对照表由固定种子针对当前国家生成 18 组,默认显示前 12 行,点「加载更多」展开到 18 行;导出带 BOM 的 CSV 用 Excel 打开不乱码,复制 TSV 可直接粘进表格软件。注意:所有账号均为随机格式演示,不对应任何真实银行账户。

使用方法

本页把国际银行账号的生成做成可反复试算的小工具,打开就带一组德国(DE)非空示例,不必先输入就能看到完整结果。要生成别的国家的账号,先用「国家」下拉选 DE、FR 或 GB,每个国家对应不同的本国 BBAN 长度(德国与英国 18 位、法国 22 位)。再调两个数字框:「生成数量」决定一次要多少条,范围 1 到 100;「固定种子」决定这批随机数的来源,同一国家加同一种子永远得到同一批账号。数量框或种子框里按回车键 Enter(不加 Ctrl、Cmd 或 Shift)立即重算,也可以点「生成账号」。

结果区把每条 IBAN 按 4 位一组插入空格显示,例如 DE09 0000 0000 0012 3456 78,这是欧洲印刷与网银界面常见的写法,便于肉眼核对;需要连续串时可自行去掉空格。点「复制结果」把当前这批账号收进剪贴板;点「载入示例」把国家、数量和种子全部还原成默认样本。页面上方结果区带 role="alert",读屏软件会朗读生成结果。

下方对照表默认列出 12 行,每行给出序号、国家码、两位校验位和完整 IBAN(每 4 位分组),点「加载更多」展开到 18 行;可导出带 BOM 的 CSV,或按 TSV 复制整张表。每个输入框都给了 min、max、step:数量超出 1 到 100、种子不是正整数,都会弹出具体报错,不会静默当成 0 继续出数。本页明确是格式演示生成器,不绑定任何真实银行账户,严禁用于伪造或测试真实转账。

能解决什么问题

第一类需求是做 IBAN 格式与校验的教学和联调。跨境收款、SaaS 对账、财务系统接入时,工程师需要一个「校验位对得上」的样本来验证自己的 IBAN 解析与 mod97 校验函数。固定种子让演示可复现,两边算出来的是同一批账号,谁算错校验位一眼就能看穿。本页随机IBAN生成器正是为这种场景服务——它输出结构合法、能通过 mod97 的账号串,可直接拿去喂你的校验代码。

第二类需求是批量造格式合法的测试账号。写跨境支付接口、做 IBAN 合法性中间件、压测入库流程时,常需要一大批「长得像真 IBAN、但内容随机」的输入。逐条手搓既慢又容易把校验位算错;本页一次给成百上千个全带正确校验位的样本,且同一种子复现,方便回归测试时比对前后两次是否一致。

本页不解决这些事:它不查任何银行真实账户,不验证某段 IBAN 是否对应一个真实存在的户头,也不指向任何可收款的钱包。mod97 校验位只保证「数字串格式合规」,绝不证明账号真实有效。因此本页是格式与校验演示工具,输出的账号仅供学习、测试和占位,严禁拿去伪造或测试真实转账,否则可能触犯法律。

原理和变量

IBAN 是国际银行账号,结构是「国家码(2 位) + 校验(2 位) + 本国 BBAN」。国家码用 ISO 3166 的两字母(如 DE、FR、GB);中间两位是 mod97 校验位;后缀 BBAN 是各国自己的账号段,长度由国别决定(德国 18、法国 22、英国 18 等)。不同国家的 BBAN 内部含义各异,本页只保证把它填够对应长度,不解析其内部字段。

校验位用 mod97(ISO 7064)。算法先把国家码字母换成数字(A=10、B=11 … Z=35),拼成「国家码数字串 + '00' 占位 + BBAN」这一长串数字,整体对 97 取余得到 rem,再算 校验位 = (98 - rem) % 97,补零成两位。最终把校验位插回「国家码 + 校验位 + BBAN」就得到完整 IBAN。验证时把完整 IBAN 前四位移到末尾、字母转数字后整体 mod97,余数应为 1。

用固定种子复现随机。本页的 BBAN 由一条可复现的线性同余公式产生:s = (Math.imul(s, 1103515245) + 12345) & 0x7fffffff,取数时取 Math.floor(s / 2147483647 * 10) 得到 0 到 9 的一个数字,连续取 BBAN 长度次就得到一条随机本国账号段。给定同一初始种子,每次推进得到的数字序列完全相同,所以固定种子勾选后生成的 IBAN 可跨机器、跨时间复现。国家切换只改变 BBAN 长度和国家码字母,校验公式不变。

完整示例(逐步代入 mod97)

以文档内置样本走一遍:国家码 DE,BBAN 取 000000000012345678(18 位)。先把 DE 转数字:D=13、E=14,得 1314;拼上 '00' 占位与 BBAN,得到数字串 131400000000000012345678。对这串整体做 mod97,余数为某值 rem,则 校验位 = (98 - rem) % 97 = 09。于是完整 IBAN 为 DE09 0000 0000 0012 3456 78,与数据表给出的复算值一致。这条样本用来核对公式,与本页默认随机示例无关。

再取一个法国样本验证:FR 转数字 F=15、R=27,BBAN 取一段 22 位随机串,按同样流程算得校验位为 47,即形如 FR47 6141 6986 5309 2780 8340 60。法国 BBAN 比德国长 4 位,所以整串更长、分组更多,但 mod97 公式完全一样,只是参与运算的数字串更长。两个样本校验位分别为 09 与 47,与数据表一致。

表格里每一行的校验位都不是写死在页面里的答案,而是把那一行的国家码与 BBAN 代入同一条 mod97 公式现算出来的;你切换国家、清空种子换成别的值,整批账号会立刻按新参数重新生成,校验位随之重算。所有示例都能被页面自己的算法复算,不存在手填的常量。

对照表

对照表用固定种子针对当前国家生成 18 组 IBAN,默认显示前 12 行,点「加载更多」展开剩余 6 行。每行给出国家码、两位校验位、以及完整 IBAN(每 4 位分组)。以默认 DE 为例:第 1 行校验位 82、完整 DE82 6201 0648 3107 0756 53;第 6 行校验位 91、完整 DE91 5349 0775 9469 0952 87;第 12 行校验位 51、完整 DE51 6081 4682 4075 9108 86。

表格数据与上方结果区来自同一套生成逻辑:结果区按「生成数量」取前若干条,表格则固定展示 18 条供对照。导出与复制都取自同一份数组,不会漏掉屏幕上未展开的行。切换国家后,表格会按新国家的 BBAN 长度重新生成,法国会比德国多出 4 位、分组多出一组。

与结果区的关系是:结果区回答「我这次要的 N 条账号是什么」,对照表回答「固定种子下整批 18 条长什么样」。前者随数量变化,后者是固定种子的完整展开,两者独立但同源。

结果边界与舍入

常见问题

生成的 IBAN 能拿去真实收款或测试转账吗?

绝对不能。本页只保证数字串通过 mod97 格式校验,但 BBAN 部分是随机拼出来的,不对应任何真实银行的真实户头。拿去发起真实转账会失败甚至涉嫌伪造金融凭证;所谓「测试真实转账」也千万不要做。本页明确定位是格式与校验的演示和测试工具,仅供学习、占位和回归测试。

为什么法国(FR)的账号比德国(DE)长?

因为各国 BBAN 长度不同。IBAN = 国家码(2) + 校验(2) + 本国 BBAN,BBAN 是各国自定的账号段,法国规定 22 位、德国与英国是 18 位。本页按国别填够对应长度,所以切换成 FR 后整串会多出 4 位、分组多出一组,但 mod97 校验公式不变。

mod97 里的 '00' 占位是什么意思?

待求的两位校验位在运算时要先当成 00 参与。具体做法是把「国家码转数字 + '00' + BBAN」拼成长数字串做 mod97 得到余数 rem,再算 (98 - rem) % 97 作为校验位。'00' 就是给这两位留出空位,等算出真实校验位后插回「国家码 + 校验位 + BBAN」就得到完整 IBAN。

同一个种子,换国家后生成的账号会一样吗?

不会。种子只决定 BBAN 那一段随机数字序列,而国家改变会同时改变 BBAN 长度和国家码字母,参与 mod97 的数字串也随之变化,校验位和整串都不同。但同一个国家 + 同一个种子,无论什么时候、在哪台机器上算,结果都一致,这正是固定种子复现的意义。

国家码字母会进到最终账号里吗?

最终 IBAN 的国家码始终是两个字母(DE/FR/GB 等)。字母转数字(A=10…Z=35)只发生在校验运算内部,用来把整串变成纯数字做 mod97,运算结束不会写入结果文本,所以你复制到的 IBAN 仍是字母开头的标准格式。

数量和种子都留空会怎样?

数量留空按默认 10 处理,种子留空按默认 20261108 处理,页面打开即带德国示例。只有填了非法值(如数量 0、种子为负数或非数字)才会触发具体报错并停止生成,不会把坏输入悄悄当成 0。

校验位出现前导零(如 09)正常吗?

正常。IBAN 校验位固定两位,算出来是 9 时写成 09,是规范要求的补零,不是缺位。例如文档样本 DE09 0000 0000 0012 3456 78 的校验位就是 09,页面会如实显示前导零,喂给系统前不要自行删掉。

生成的账号会被上传或保存吗?

不会。从取随机、算校验到生成表格和复制到剪贴板,整条链路都在浏览器本地完成,不发起任何网络请求,也不写 Cookie 或 localStorage。关掉页面后当前这批账号不会留存,下次打开仍是默认示例。

相关工具