银行卡号怎么校验:Luhn 算法原理与发卡行识别

抄错一位、数字对调,一眼查出来

报销打款、绑定支付、录入供应商账户时,银行卡号抄错一位就是钱打到了别人账上。好在卡号不是随机串——最后一位是按 Luhn 算法算出来的校验位,绝大多数抄录错误都能被它拦下。

这篇用 NBTools 的银行卡校验工具讲清楚:Luhn 怎么算、它能拦住哪类错误、以及"银行名称"是怎么识别出来的。卡号在浏览器本地校验,不上传服务器

输入卡号,得到四项结果

在输入框填入银行卡号(13–19 位纯数字),点"校验"即可看到:

  • 格式化卡号:按 4 位一组分隔,如 6222 0212 3456 7890 123,方便肉眼核对。
  • 银行名称:根据卡号开头的 BIN 前缀识别发卡行。
  • 卡类型:如借记卡。
  • Luhn 校验:通过 / 未通过。

输入含空格也能正常处理,工具会先去掉空格再运算。

Luhn 算法:四步算出校验位

Luhn(也称"模 10 算法")的规则其实很简单,从右往左处理每一位:

  1. 从最右边(校验位)开始,先不处理它,从它左边第一位开始交替处理。
  2. 每隔一位乘以 2
  3. 乘积大于 9 则减 9(等价于把两位数字相加)。
  4. 把所有数字(含未乘 2 的那些)求和,若总和能被 10 整除,则校验通过。
作用能拦住拦不住
Luhn 校验单个数字抄错(如 3 写成 8)多位同时错且恰好抵消的情况(罕见)
Luhn 校验相邻两位对调(大部分情况)09 ↔ 90 这类对调(乘 2 减 9 后结果相同)

所以 Luhn 是一道很有效的"防手滑"关卡,但它不是防伪手段,也不能证明卡号真实存在或可用。

银行名称是怎么识别出来的

靠的是卡号开头的 BIN(发卡行识别码)。工具内置了一张常见 BIN 前缀表,用卡号前 6 位去匹配;6 位匹配不到时,会逐级回退到 3 位前缀再试,从而识别出银行名称与卡类型。

例如以 622202622203621226 开头的通常识别为工商银行借记卡;622848 多为农业银行;622588 多为招商银行。

需要说明的是:内置表主要覆盖常见银行的借记卡。如果你的信用卡或部分小众卡显示"未知银行 / 未知",只说明它不在表中,不影响 Luhn 校验结果,也不代表卡号有问题。

校验通过 ≠ 卡片真实有效

这点必须分清,否则容易误判:

  • ✅ 校验通过说明:卡号位数合法、符合 Luhn 规则,基本可以排除抄录错误。
  • ❌ 不能说明:该卡真实存在、状态正常、开户名匹配、余额充足。工具不联网、不发起任何银行查询

因此正确用法是:把它当作录入前的自检环节,确认无误后再通过正规渠道(如银行 App 转账时的户名回显)核验户名与账户状态。

典型使用场景

  • 报销 / 打款前自检:粘贴卡号先看 Luhn 是否通过,能拦掉绝大多数手抄错误。
  • 核对"银行名称"对不对:员工填的是工行卡,工具识别出农行,说明卡号或填写有误。
  • 格式化展示:把一长串数字转成 4 位一组,方便在表格或聊天里逐段核对。

常见问题

Luhn 校验通过说明卡是真的吗

不是。它只说明卡号位数合法且符合 Luhn 规则,可排除抄录错误。工具不联网、不查询银行,无法证明卡号真实存在、状态正常或户名匹配。

提示"银行卡号长度应在 13-19 位之间"

标准银行卡号为 13–19 位纯数字。请检查是否多输、漏输,或混入了字母、连字符等非数字字符。

为什么显示"未知银行"

说明卡号前缀不在内置 BIN 表中。该表主要收录常见银行的借记卡,信用卡与部分小众卡可能识别不出。Luhn 校验结果不受影响,仍可正常判断卡号是否抄错。

卡号里有空格能校验吗

可以。工具会先去除空格再运算,直接粘贴带空格的卡号即可,同时还会输出 4 位一组的格式化结果。

卡号会上传吗

不会。校验完全在浏览器本地完成,卡号不上传服务器,也不被记录。

相关工具

作者:NBTools · 更新于 2026年9月23日 · 阅读约 4 分钟