开发者工具

信用卡号验证器|Luhn算法・卡组织识别

输入信用卡号即可通过Luhn算法验证校验位,并自动识别Visa、Mastercard、Amex等卡组织。也适合用于表单校验逻辑的测试。

[[ labels.client_side_note ]]


[[ labels.format_error ]]
[[ labels.sample_label ]]:
[[ labels.no_input ]]

[[ 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

使用提示

  • 请勿输入真实卡号,可点击示例按钮使用公开的测试号码(如Visa: 4111 1111 1111 1111)来体验功能。
  • 即使号码中包含空格或连字符,也会自动去除后再判断,可直接粘贴复制来的号码。
  • 本工具仅通过Luhn算法进行格式校验,实际的信用核实、余额查询请使用支付服务商提供的API。
  • 在开发表单校验逻辑时,可用本工具分别生成有效与无效的号码,方便测试正常和异常两种情况。

常见问题

不能。本工具只进行Luhn算法的格式校验,无法判断该卡是否真实存在、是否已被停用,或余额是否充足。真正的信用核实需要通过支付服务商的认证系统完成。

输入的号码不会发送到服务器,所有计算均在浏览器的JavaScript中完成。不过如果只是想测试功能,建议使用示例按钮提供的测试号码,而非真实卡号。

这是IBM的Hans Peter Luhn于1954年发明的一种错误检测算法。从卡号最右侧开始每隔一位乘以2,若所有数字之和为10的倍数,则判定格式有效,可检测出大部分的输入错误。

是根据卡号开头的几位数字(IIN:发卡行识别码)与总位数的组合来判断的。例如Visa以“4”开头,长度为13、16或19位;Mastercard以“51〜55”等开头,长度为16位;JCB以“3528〜3589”开头,长度为16位,均基于公开的规则。详细对照表请参见工具下方的“支持的品牌与判定条件(IIN・位数)”部分。

不是。通过Luhn校验只能说明该号码在格式上“没有矛盾”。即使是随机编造、并不存在的号码,只要调整最后一位数字,也能通过Luhn校验。
ツールくん

闲话 ― 校验位之父 Hans Peter Luhn

信用卡号末位的“校验位”由IBM工程师Hans Peter Luhn于1954年发明的算法进行验证。他因此项发明于1960年获得专利,如今专利早已失效,该算法已成为任何人都可以自由使用的公开算法。

Luhn算法的原理其实很简单:从卡号最右侧开始,每隔一位将数字乘以2,若结果为两位数则将其各位相加(例如8×2=16 → 1+6=7)。将所有数字相加后,若总和能被10整除,则该号码在格式上被判定为有效。

这一算法不仅用于信用卡,还广泛应用于IMEI号码(手机识别码)、加拿大社会保险号码等各类识别号码的输入错误检测。需要注意的是,Luhn算法仅用于“检测输入错误”,并不能判断该卡号是否真实存在或是否有余额。

卡号的前6〜8位被称为“IIN(发卡行识别码)”,其中包含了该卡属于哪个国际卡组织、由哪家银行发行的信息。本工具的卡组织识别功能,正是基于这些公开的IIN号段规则实现的。