如果这个工具帮到了你,可以请作者喝杯咖啡 ☕
生成符合Luhn算法的测试用银行卡号,支持Visa、MasterCard、银联等主流卡组织格式
点击“生成银行卡号”查看结果
在开发支付功能时,你可能会用到成百上千个格式正确的银行卡号来测试表单验证,但绝不能使用用户的真实卡号。我们这个生成器可以为你创建符合 Luhn 算法的虚拟测试卡号,安全又合规。生成的卡号能够通过银行系统的初级格式校验,却没有对应的真实账户,专门用于软件测试、教学演示等非交易场景。目前支持三种常见卡组织:Visa、Mastercard 和银联(UnionPay),单次最多可以生成 100 个卡号。
银行卡号的核心校验规则来自 Luhn 算法(又称“模10算法”),由 Hans Peter Luhn 在 1954 年提出,今天仍被全球支付网络用于检测卡号输入错误。它的原理很简单:从卡号最右边一位(校验位)开始,每间隔一位将数字乘以 2;如果乘 2 后的结果大于或等于 10,就把两个数字相加(等价于减 9);然后把所有这些数字加起来,总和如果能被 10 整除,卡号就通过了校验。这样设计的巧妙之处在于,它能够发现绝大多数单一位数误敲和相邻两位换位的错误,但计算量又极小,非常适合在刷卡终端和网页端实时执行。
我们选择 Visa,数量设为 1,点击生成。假设得到的卡号是 4929123456789012(真实使用时会随机变化)。这 16 位数字可以拆成三部分:前 6 位 492912 是发卡行标识码(BIN),表明这是一张 Visa 卡;中间第 7 到 15 位是随机生成的个人账户标识;最后一位 2 是 Luhn 校验位。
手工验证一遍:取前 15 位 492912345678901,从右往左把偶数位(第15、13…1位)乘以 2,得到序列 8,9,4,9,2,4,10,14,18,8,14,12,6,12,2;凡超过 9 的减 9,于是变成 8,9,4,9,2,4,1,5,9,8,5,3,6,3,2。将它们与未加倍的第14、12…2位数字 2,1,3,5,7,9,0 一起相加:8+2+9+1+4+3+9+5+2+7+4+9+1+0+5+9+8+3+6+3+2 = 108。108 能被 10 整除,校验通过,所以 2 是正确的校验位。
对照来看:选择 Mastercard 会得到以 51–55 开头的 16 位卡号,例如 5323456789012345;选择 银联 会得到以 62 开头的 16 位卡号,如 6223456789012345。通过前缀就能分清是哪一家的测试卡。
你拿到的每一串 16 位数字都不是随便生成的。前 6 位固定遵循对应卡组织的 BIN 范围,用来让任何读卡系统一眼识别出“这是 Visa 还是银联”;中间 9 位是随机生成的个人账户标识,末尾 1 位由前 15 位通过 Luhn 算法自动算出。不同卡组织的典型特征汇总如下:
| 卡组织 | 前缀(BIN 范围) | 生成卡号长度 |
|---|---|---|
| Visa | 4 | 16 位 |
| Mastercard | 51–55 | 16 位 |
| 银联(UnionPay) | 62 | 16 位 |
你可以把生成的卡号复制到任何支持 Luhn 校验的工具中验证,它一定会通过。但请注意:这些卡号不包含真实银行信息、没有有效期和 CVV,只解决了“格式合法”这一个问题。
常见踩坑:
FAQ:
Q: 这些卡号能用来买东西吗?
A: 绝对不能。它们是没有任何资金账户关联的数字序列,支付网关会直接拒绝交易。
Q: 为什么某个网站会自动识别我生成的卡号为 Visa?
A: 因为前 6 位数字正好落在 Visa 的 BIN 范围内,网站只做了前缀检测。这只是初步识别,不代表卡号真实,后续授权仍会失败。
Q: 能不能生成美国运通卡或 JCB 卡号?
A: 目前只支持 Visa、Mastercard 和银联三种。如果你需要其他卡组织,建议寻找支持更多 BIN 的专用测试工具。
Q: 数量上限为什么是 100?
A: 一次生成过多会导致页面渲染变慢,100 是在流畅体验和批量需求之间的一个平衡点。上千个卡号可以分成多次生成。
Q: 刷新页面后卡号还在吗?
A: 不会保留。生成器纯在浏览器端运行,不存储任何数据,刷新或关闭页面后结果就会消失。
现在你可以在上方的生成器中,选择卡组织、填好数量,试试生成自己的测试卡号了。