银行卡号校验怎么用:Luhn 算法与卡组织识别的原理

在 App 里输错一位银行卡号,提交的瞬间就被拦下——这么快的「联网验证」,其实是纯本地数学。银行卡号自带一套自校验机制(Luhn 算法),这篇讲清它的原理、卡号里的隐藏信息,以及校验的能力边界。

一、Luhn 算法:从右往左的奇偶加权

  1. 从最右一位(校验位)开始,从右往左数;
  2. 奇数位数字直接相加,偶数位数字乘 2(乘完超过 9 就减 9,即两位数拆位相加);
  3. 所有数字总和若能被 10 整除,卡号校验通过;
  4. 例:卡号 6222 0211 1122 3456 78 类的长号,任抄错一位或相邻两位互换,总和就不再整除 10——错号当场现形。

它拦下的是手误(输错、漏位、换位),覆盖了绝大多数输入错误,这也是它能被全球支付系统沿用的原因。

二、卡号里的信息:BIN 前缀

前缀卡组织
62银联(UnionPay)
4Visa
51–55、22–27Mastercard
34、37American Express

前几位(通常 6–8 位)叫 BIN(Bank Identification Number),能识别卡组织和发卡机构段;号段长度也随组织固定(银联常见 16–19 位、Visa/MC 16 位、Amex 15 位)。工具按这些规则给出「卡组织识别 + 长度校验 + Luhn 校验」三重判断。

三、能力边界:校验通过 ≠ 卡真实存在

💳 银行卡号校验:Luhn 校验 + 卡组织识别 + 号段长度核对,纯本地计算;资金安全相关再看 密码安全指南。

常见问题

问:为什么有的卡号是 19 位?
银联部分借记卡 19 位,各家发卡机构在标准内自定长度,工具按前缀对应的合法长度范围判断。

问:校验通过的号一定是真卡号吗?
不一定,只是数学合法。真实有效性只有发卡机构能确认。

问:开发者什么时候用得到它?
表单即时校验(省一次服务器请求)、测试数据造号(造合法格式的假卡号),是支付开发的基础件。