信用卡号验证器|Luhn算法・卡组织识别
输入信用卡号即可通过Luhn算法验证校验位,并自动识别Visa、Mastercard、Amex等卡组织。也适合用于表单校验逻辑的测试。
[[ labels.client_side_note ]]
[[ labels.result_label ]]
| [[ labels.formatted_label ]] | [[ result.formatted ]] |
|---|---|
| [[ labels.brand_label ]] | [[ brandName ]] [[ labels.brand_unknown ]] |
| [[ labels.checksum_label ]] | ✓ [[ labels.checksum_valid ]] ✗ [[ labels.checksum_invalid ]] |
支持的品牌与判定条件(IIN・位数)
| 品牌 | 开头数字(IIN) | 位数 |
|---|---|---|
| Visa | 4 | 13, 16, 19 |
| Mastercard | 51–55, 2221–2720 | 16 |
| American Express | 34, 37 | 15 |
| Discover | 6011, 65 | 16 |
| JCB | 3528–3589 | 16 |
| Diners Club | 300–305, 36, 38 | 14 |
| UnionPay | 62 | 16–19 |
信用卡号验证器是什么
信用卡号的末位嵌有一个用于检测输入错误的校验位。通过 Luhn 算法这一计算公式来核对各位数字的排列,即可发现绝大多数单个数字打错或相邻数字顺序颠倒的情况。本工具在输入号码后会执行该项校验,并根据开头数字与位数自动识别卡组织。
需要强调的是,这仅仅是格式层面的校验。即使通过了 Luhn 校验,也不代表该号码对应一张真实存在的卡,更无法说明它是否可用。实际的信用核实必须经由支付服务商的 API 完成。输入的号码只在浏览器内处理,不会发送到任何服务器。
验证卡号的步骤
- 输入号码 即使包含空格或连字符也会自动去除,可以直接粘贴复制来的数值。
- 查看校验位结果 会以有效或无效显示 Luhn 算法的校验结果。若为无效,说明某一位数字有误。
- 确认卡组织识别结果 根据开头数字与位数推定卡组织,判定条件可在下方的对照表中查看。
- 用示例号码试验 点击示例按钮即可填入测试号码,无需使用真实卡号就能确认功能。
用好本工具的小技巧
- 请勿输入真实卡号,可点击示例按钮使用公开的测试号码(如Visa: 4111 1111 1111 1111)来体验功能。
- 即使号码中包含空格或连字符,也会自动去除后再判断,可直接粘贴复制来的号码。
- 本工具仅通过Luhn算法进行格式校验,实际的信用核实、余额查询请使用支付服务商提供的API。
- 在开发表单校验逻辑时,可用本工具分别生成有效与无效的号码,方便测试正常和异常两种情况。
信用卡号验证器的使用场景
实现表单的输入校验
可与自己编写的校验逻辑对照结果,同时准备有效与无效两种号码进行确认。
确认卡组织识别逻辑
可通过对照表查看开头数字与位数会对应到哪个卡组织,适合用于卡片图标的切换实现。
排查输入错误
支付无法通过时,可先确认号码本身的格式是否有误,有助于更快锁定原因。
学习 Luhn 算法
试着只改动其中一位数字,就能实际看到校验结果变为无效,有助于理解其原理。
卡号相关术语
- Luhn 算法
- 用于确认数字排列是否妥当的计算方法。从右起每隔一位乘以二后求和,能被十整除即判定为有效。
- 校验位
- 为检测输入错误而附加在末尾的数字,由其余各位数字计算得出。
- IIN
- 卡号开头的发卡机构识别码。查看此处即可判别卡组织与发卡方。
- 卡组织
- 指 Visa、Mastercard、American Express 等国际品牌,由开头数字与位数的组合判定。
- 信用核实
- 确认该卡是否可用、额度是否足够的处理流程,与格式校验完全是两回事。
常见问题
闲话 ― 校验位之父 Hans Peter Luhn
信用卡号末位那个不起眼的“校验位”,其实出自IBM工程师Hans Peter Luhn于1954年发明的一套算法。他因此项发明于1960年获得专利,如今专利早已失效,这套算法也就顺理成章地成为了任何人都可以自由使用的公开算法,如今几乎所有主流卡组织都在沿用它。
有趣的是,Luhn算法的原理其实很简单:从卡号最右侧开始,每隔一位将数字乘以2,若结果为两位数则将其各位相加(例如8×2=16 → 1+6=7)。把所有数字相加之后,只要总和能被10整除,该号码在格式上就会被判定为有效——如此朴素的规则,却足以拦下绝大多数的输入笔误。
正因为原理简单又通用,这一算法不仅用于信用卡,还广泛应用于IMEI号码(手机识别码)、加拿大社会保险号码等各类识别号码的输入错误检测。不过需要留意的是,Luhn算法终究只是用于“检测输入错误”,并不能判断该卡号是否真实存在,更不能判断是否还有余额。
卡号的前6〜8位则被称为“IIN(发卡行识别码)”,其中悄悄藏着这张卡属于哪个国际卡组织、由哪家银行发行的信息。本工具的卡组织识别功能,正是基于这些公开的IIN号段规则实现的。