报销打款、绑定支付、录入供应商账户时,银行卡号抄错一位就是钱打到了别人账上。好在卡号不是随机串——最后一位是按 Luhn 算法算出来的校验位,绝大多数抄录错误都能被它拦下。
这篇用 NBTools 的银行卡校验工具讲清楚:Luhn 怎么算、它能拦住哪类错误、以及"银行名称"是怎么识别出来的。卡号在浏览器本地校验,不上传服务器。
输入卡号,得到四项结果
在输入框填入银行卡号(13–19 位纯数字),点"校验"即可看到:
- 格式化卡号:按 4 位一组分隔,如
6222 0212 3456 7890 123,方便肉眼核对。 - 银行名称:根据卡号开头的 BIN 前缀识别发卡行。
- 卡类型:如借记卡。
- Luhn 校验:通过 / 未通过。
输入含空格也能正常处理,工具会先去掉空格再运算。
Luhn 算法:四步算出校验位
Luhn(也称"模 10 算法")的规则其实很简单,从右往左处理每一位:
- 从最右边(校验位)开始,先不处理它,从它左边第一位开始交替处理。
- 每隔一位乘以 2。
- 乘积大于 9 则减 9(等价于把两位数字相加)。
- 把所有数字(含未乘 2 的那些)求和,若总和能被 10 整除,则校验通过。
| 作用 | 能拦住 | 拦不住 |
|---|---|---|
| Luhn 校验 | 单个数字抄错(如 3 写成 8) | 多位同时错且恰好抵消的情况(罕见) |
| Luhn 校验 | 相邻两位对调(大部分情况) | 09 ↔ 90 这类对调(乘 2 减 9 后结果相同) |
所以 Luhn 是一道很有效的"防手滑"关卡,但它不是防伪手段,也不能证明卡号真实存在或可用。
银行名称是怎么识别出来的
靠的是卡号开头的 BIN(发卡行识别码)。工具内置了一张常见 BIN 前缀表,用卡号前 6 位去匹配;6 位匹配不到时,会逐级回退到 3 位前缀再试,从而识别出银行名称与卡类型。
例如以 622202、622203、621226 开头的通常识别为工商银行借记卡;622848 多为农业银行;622588 多为招商银行。
需要说明的是:内置表主要覆盖常见银行的借记卡。如果你的信用卡或部分小众卡显示"未知银行 / 未知",只说明它不在表中,不影响 Luhn 校验结果,也不代表卡号有问题。
校验通过 ≠ 卡片真实有效
这点必须分清,否则容易误判:
- ✅ 校验通过说明:卡号位数合法、符合 Luhn 规则,基本可以排除抄录错误。
- ❌ 不能说明:该卡真实存在、状态正常、开户名匹配、余额充足。工具不联网、不发起任何银行查询。
因此正确用法是:把它当作录入前的自检环节,确认无误后再通过正规渠道(如银行 App 转账时的户名回显)核验户名与账户状态。
典型使用场景
- 报销 / 打款前自检:粘贴卡号先看 Luhn 是否通过,能拦掉绝大多数手抄错误。
- 核对"银行名称"对不对:员工填的是工行卡,工具识别出农行,说明卡号或填写有误。
- 格式化展示:把一长串数字转成 4 位一组,方便在表格或聊天里逐段核对。
常见问题
Luhn 校验通过说明卡是真的吗
不是。它只说明卡号位数合法且符合 Luhn 规则,可排除抄录错误。工具不联网、不查询银行,无法证明卡号真实存在、状态正常或户名匹配。
提示"银行卡号长度应在 13-19 位之间"
标准银行卡号为 13–19 位纯数字。请检查是否多输、漏输,或混入了字母、连字符等非数字字符。
为什么显示"未知银行"
说明卡号前缀不在内置 BIN 表中。该表主要收录常见银行的借记卡,信用卡与部分小众卡可能识别不出。Luhn 校验结果不受影响,仍可正常判断卡号是否抄错。
卡号里有空格能校验吗
可以。工具会先去除空格再运算,直接粘贴带空格的卡号即可,同时还会输出 4 位一组的格式化结果。
卡号会上传吗
不会。校验完全在浏览器本地完成,卡号不上传服务器,也不被记录。
相关工具
- NBTools 银行卡校验:https://nbtools.cn/tools/bank-card
- 统一社会信用代码校验:核对 18 位信用代码与校验码
- 身份证校验:校验身份证格式与校验码
- 金额大写转换:打款金额转人民币大写