银行卡号校验与卡种识别

填卡号,先验校验位对不对,再看是哪个卡组织、长度符不符合规则。校验位不对说明有一位抄错了,页面会直接告诉你正确的最后一位是多少。

上面的三个是公开的测试卡号,不是真实账户。整站都在浏览器本机算,卡号不会发到服务器;但在公共电脑上仍然不建议输入真实卡号。

Luhn 算法是怎么算的

银行卡号的最后一位是校验位,由前面所有位算出来。算法叫 Luhn(也叫模 10 算法):从右往左数,隔一位把数字乘 2,乘完超过 9 就减 9,然后把所有数字加起来,总和能被 10 整除才算通过。举个短例子,卡号 79927398713 的验证过程是:先算前面各位的加权和,最后一位 3 刚好把总和凑成 10 的倍数。

这个算法的能力边界要知道:它能发现绝大多数「抄错一位」和「相邻两位写反」的错误,但挡不住刻意伪造的号码。所以校验通过只说明号码自洽,不代表卡真实存在、没被注销或者能用。任何拿「校验通过」当实名认证依据的系统,都是设计得不够严谨的。

为什么判断不了借记卡还是信用卡

借记卡和信用卡在号段上并不分开。同一个银行、同一段 IIN,既可能发借记卡也可能发信用卡,区别在卡组织内部怎么分配,外部只能看到号段。有些国家和地区会用某几位区分卡种,但不是国际通行规则,所以本页不给这个结论,只给卡组织和长度。

为什么发卡行只能算推测

卡组织把号段分配给成员机构,银行再往下细分。前面 6 位(BIN)确实能对应到发卡行,但这张表由各家自己维护并不断扩容,公开版本永远滞后。老卡、新发的卡、联名卡、外资行和虚拟卡尤其容易对不上。所以本页只收了一小批常见号段,标成「按号段推测」,并且在校验位不通过时干脆不给这个结论——号都算不对,谈归属没有意义。

和身份证、统一社会信用代码校验的区别

身份证号用的是 ISO 7064 的 MOD 11-2(末位可能是 X),统一社会信用代码用的是 MOD 31-1,银行卡号用的是 Luhn 的模 10。三种算法不一样,但思路相同:都是加一位校验位,让抄错数字这件事在录入阶段就暴露出来。

卡号属于高度敏感的个人信息,建议只在必要的场合填写。真要在不熟悉的页面上验证卡号,优先用银行官方的渠道;本页虽然全程在浏览器本地计算、不上传任何数据,公共设备上输入真实卡号仍然有被键盘记录或被旁人看到的风险。