在线银行卡号校验工具_Luhn算法验证与卡组织识别

把一段银行卡号粘贴进来,立即用 Luhn 算法判断它是否合法,并依据卡号前缀识别卡组织(银联、Visa、Mastercard 等)。所有计算都在本地浏览器完成,卡号不会离开你的设备,适合在录入前快速核对号码格式与归属组织。

输入框按回车会立即重新校验;卡号被清空时自动填回示例号。下方「测试卡号对照表」共 14 行,默认显示 12 行,点「加载更多」看余下 2 行;「导出 CSV」保存为带字节序标记的文件,「复制对照表」复制制表符分隔文本。

使用方法

  1. 打开页面就有一组完整结果:卡号已经填好为 6212345678901234569,结果区已经给出「Luhn 校验通过 · 卡组织 银联 UnionPay · 19 位」的结论,不需要先填任何东西。
  2. 想校验自己的卡,就把输入框里的示例号替换成你的卡号;可以带空格也可以不带,程序会先去掉空格再判断,只要里面是 12 到 19 位数字就行。
  3. 「银行卡号」输入框按回车会立即重新校验;也可以一边输入一边看结果,每改动一个数字结果都会当场更新。
  4. 结果区的第一行就是本次校验结论:先说 Luhn 通过还是未通过,再说识别出的卡组织,最后是卡号长度和卡种提示,全部是当场算出来的,不是固定文案。
  5. 结果区下面是「测试卡号对照表」,列出一批常见测试卡号与其 Luhn 结果与卡组织,方便你对照自己算出来的结论是否正确。
  6. 「复制结果」复制结果区的纯文本,「复制对照表」复制制表符分隔的表格,「导出 CSV」则保存成 Excel 能直接打开的带标记文件。
  7. 本页不联网、不写本地存储,刷新即回到默认示例;你输入的卡号只在本机内存里算完即弃,不会被记录。

这个银行卡号校验工具能解决什么

这个银行卡号校验工具帮你在不连网、不上传卡号的前提下,快速判断一串数字「长得像不像一张合法的银行卡」。最常见的使用场景是表单录入:用户在页面上填了一串卡号,提交前先用 Luhn 算法筛掉明显多一位、少一位或按错键的号码,能挡掉绝大部分手误,省去后续一连串无谓的银行侧报错。

第二类场景是识别卡组织。不同卡组织的前缀(BIN 前缀)各有规律:4 开头多半是 Visa,51 到 55 或 2221 到 2720 是 Mastercard,34、37 是 American Express,62 是银联,35 开头一段是 JCB,6011、65、644 到 649 是 Discover。知道卡组织后就能预先选择对应的支付通道、提示用户该卡是否支持某种验证方式。

第三类场景是核对长度。卡号长度本身也是线索:American Express 固定 15 位,多数 Visa 与 Mastercard 是 16 位,银联常见 16 到 19 位。长度明显偏离典型区间时,即便 Luhn 通过也要提醒用户复核。

必须写清的边界:仅凭卡号前缀只能识别「卡组织」,绝对识别不了具体是哪家发卡银行——那需要完整的 BIN 数据库,几万条前缀远不是页面里这几条规则能覆盖的。本页因此明确不做银行识别,也不会给你一个具体的银行名称。

Luhn 校验与卡组织识别的原理

Luhn 算法(也叫模十算法)是一个极轻量的校验和,用来发现卡号里因为抄写、按键产生的单位错误与大部分相邻换位错误。做法是从右往左数,把奇数位(从右数第 1、3、5…位)原样相加,把偶数位(从右数第 2、4、6…位)先乘 2,若乘积大于 9 就再减去 9,然后把两部分求和。最终总和能被 10 整除,就认为「Luhn 校验通过」。

为什么是「乘 2 再减 9」?因为对任意一位数字 d,2d 若超过 9,它的十进制各位之和恰好等于 2d−9(例如 7×2=14,1+4=5,而 14−9=5)。这一步等价于把两位结果按位相加,保证了每一位对总和的贡献稳定,又让算法对单数字错误高度敏感。它只能查错,不能防伪造——知道规则的人随时能构造出通过 Luhn 的任意号码,所以通过校验不等于「这是一张真实存在的卡」。

卡组织识别靠的是前缀与长度的联合判断:先按开头几位数字归到某个组织,再核对长度是否落在该组织的典型区间里。下面这张变量表列出了本页用到的全部判定量与它们的取值含义。

变量含义取值影响
card原始卡号12 ~ 19 位数字(空格会被忽略)校验与识别的唯一输入
luhnLuhn 校验结论通过 / 未通过总和能否被 10 整除决定
org卡组织银联、Visa、Mastercard、Amex、JCB、Discover、未知由前缀与长度联合判定
len卡号长度去掉空格后的位数用来核对是否落在组织典型区间
type卡种提示借记卡 / 信用卡 / 无法区分仅按组织给出经验提示,不精准

完整示例

默认示例的卡号是 6212345678901234569,共 19 位。按 Luhn 从右往左加权求和后得到的总和是 90,90 能被 10 整除,所以结论为「Luhn 校验通过」;再看前缀是 62,落在银联的典型区间 16 到 19 位里,于是卡组织判定为「银联 UnionPay」;长度 19 位,卡种提示为「借记卡或信用卡(仅凭卡号无法区分)」。把这四段拼起来就是结果区里那一整行:

6212345678901234569 → Luhn 校验通过 · 卡组织 银联 UnionPay · 19 位(银联典型 16-19 位) · 卡种:借记卡或信用卡(仅凭卡号无法区分)

把卡号换成 4111111111111111(经典 Visa 测试号,16 位),结果会变成「Luhn 校验通过 · 卡组织 Visa · 16 位(Visa 典型 13/16/19 位) · 卡种:多为信用卡亦发借记卡」;换成 1234567890123456,Luhn 求和不被 10 整除,结论变为「Luhn 校验未通过 · 卡组织 未知 · 16 位(长度 16 位) · 卡种:未知(无法仅凭卡号判断)」。两次结果同样是当场算出来的,不是写死的。

测试卡号对照表

下表共 14 行:前 12 行是常见测试卡号与它们的 Luhn 结果、卡组织、长度,后 2 行是明显不合法的示例。所有结论都由页面里的同一套 Luhn 与前缀判定函数现场算出,和你在上方输入框里得到的结果用的是同一套逻辑;默认显示 12 行,点「加载更多」看余下 2 行。

测试卡号Luhn 结果卡组织长度
4111111111111111通过Visa16
5555555555554444通过Mastercard16
378282246310005通过Amex15
6011111111111117通过Discover16
3530111333300000通过JCB16
6212345678901234569通过银联 UnionPay19
4917610000000000003通过Visa19
2223003122003222通过Mastercard16
6011000990139424通过Discover16
3566002020360505通过JCB16
5105105105105100通过Mastercard16
4012888888881881通过Visa16
1234567890123456不通过未知16
9876543210987654不通过未知16

横向读这张表能得出两条实用结论:第一,通过 Luhn 不等于真实存在,像 0000000000000000 这种全零号也能通过校验,只是卡组织识别不出来;第二,卡组织与长度强相关,American Express 固定 15 位、银联常见 16 到 19 位,长度一旦偏离就要提高警觉。

结果边界与错误提示

常见问题

Luhn 校验通过就等于这张卡真实存在吗?

不等于。Luhn 只是一个查错校验和,用来发现录入时的手误,知道规则的人随时能拼出通过校验的号码。它只能证明「格式上没写错」,不能证明「这是一张银行发行的真实卡」,真实有效性只能由发卡机构验证。

为什么 62 开头的一定算银联?

62 是中国银联在 ISO/IEC 7812 分配到的卡号前缀区间,本页据此把 62 开头且长度落在 16 到 19 位的号码判为银联。但 62 只是组织线索,具体是哪家银行发行的仍需查完整 BIN 库,本页不提供这一步。

卡号里能不能带空格?

能。程序会先把空格全部去掉再做校验与识别,所以「6212 3456 7890 1234 569」和原样连写结果一致。但最终的结论、对照表只显示去掉空格后的纯数字卡号。

为什么有的号 Luhn 通过却显示卡组织未知?

这种情况通常出现在全零号或不在任何已知组织前缀里的号码上。Luhn 只管格式对错,组织识别靠前缀,两者是独立的两步;格式对但前缀不认识,就会给出「通过 · 未知」的组合。

American Express 为什么只有 15 位?

Amex 的卡号标准长度就是 15 位(34、37 开头),比其他主流卡组织短一位,这是 ISO 分配时就定好的。页面据此把 15 位且 34/37 开头的号码判为 American Express(签账卡)。

借记卡和信用卡到底怎么分?

仅凭卡号分不出来。同一个组织(尤其是银联、Visa、Mastercard)既发借记卡也发信用卡,前缀规则无法区分。页面只能给出经验提示,准确卡种要由发卡行在你的账户信息里标明。

我的卡号会不会被上传?

不会。整个校验与识别过程都跑在你的浏览器本地,卡号只存在于本机内存,算完即弃,页面既不发请求也不写本地存储,刷新后输入框回到默认示例。

导出的对照表 CSV 带字节序标记吗?

带。对照表 CSV 导出时写入 UTF-8 字节序标记,Excel 双击不乱码;「复制对照表」是制表符分隔文本,粘进表格软件会自动分列,两者内容一致。

相关工具