卡号 / 手机号校验
Luhn 算法逐位展示过程,手机号按 E.164 规则拆分国家码。
这一页把两件事放在一起:卡号的 Luhn 模 10 校验位计算,以及手机号的 E.164 结构判定。两者都是纯格式检查。Luhn 是 ISO/IEC 7812 里 PAN 的校验位算法,它只能回答「这串数字是否符合自己最后一位」,不是认证手段,也不接触任何发卡网络;E.164 是 ITU-T 国际公共电信编号计划,规定 + 之后是国家码加用户号码、总位数不超过 15 位。粘贴的号码全部在本地计算,不上传、不请求接口,也不查询任何在线表。
卡号部分明确不携带 BIN 库。判定只用三样东西:前缀区间、号长、Luhn 结果,所以「前缀族」不等于发卡机构归属——这一段范围是有意砍掉的。前缀落在多个族的区间里时给出多候选并说明无法定族,而不是硬选一个。手机号部分按国家码表判位数,表里覆盖约六十个常用码位;大陆的 11 位号只看 13X–19X 结构,具体运营单位要靠公开分配表判定。本页不查归属地、不查在网状态、不查运营商放号记录,也不做 carrier 查询——号码解析到 E.164 形状就到此为止。
卡号 / 手机号校验怎么用
- 一行一个号码:输入框按行处理,空格、短横、点、下划线、括号都当分隔符忽略;自动判别规则是:+ 或 00 开头走 E.164,13–19 位纯数字走 Luhn,1 开头的 11 位数字按大陆手机号处理。也可以手动指定按卡号或按手机号口径。
- 看逐位计算:「展示逐位计算」打开时输出每个位置的距右端序号、是否加倍、乘积,以及求和与余数,用于核对 15 位卡(如 Amex)与 16 位卡的加倍起点差异,校验位错时还会给出应当是哪一位。
- 打码开关:mask 打开时是代码实现的行为:只保留首尾各若干位,中间按 4 位一组写成星号,输出与提示条都不出现完整号码;关闭后正文允许出现完整号码,提示条仍不重复完整号码,meta 会写明「未打码」。
- 前缀族表里有哪些条目:CARD_FAMILIES 只有十来个前缀族条目:Visa 4、Mastercard 2221–2720 与 51–55、American Express 34/37、JCB 3528–3589、UnionPay 银联 62、Discover 6011/644–649/65、Diners Club 300–305/36/38–39、Mir 米尔 2200–2204、Maestro 的若干公开前缀、UATP 的 4135/4457/4556/4752–4757/4953。
- 国家码表与大陆号段口径:国家码表里的常用码位例如 +1 标称 10 位、+44 允许 9–10 位、+49 最长按 11–12 位(+49 后 4–15 位属于德国号码计划的实际弹性)、+81 9–11 位、+86 固定 11 位。00 开头按国际字冠等价处理并注明「存库请用 + 形式」。号段说明按工信部公开的公众移动通信网号段分配口径给:170/171/162/165/167 属移动转售业务专用,192 属中国广电,其余 13X–19X 只说明属于哪个网号区间。
常见问题
Luhn 通过了能不能说明卡号是真的
不能。Luhn 是一个模 10 的自检位:把偶数位数字乘 2、超过 9 就减 9,与其余位求和,总和能被 10 整除即通过。它能抓住绝大多数单字符抄错和相邻两位调换,因为这两种错误通常会破坏模 10 结果;但它只有 10 种可能的校验值,随机编造的数字约有十分之一能通过,它也不提供任何发卡方、账户状态或额度信息。它是编号录入的自检,不是认证,更不是授权。
为什么 +86 138…、13800001234、008613800001234 是同一个号
E.164 的规范形式是 + 之后紧跟国家码和用户号码。13800001234 是国内本地写法,拨出时才加国家码 86;写成国际格式就是 +8613800001234,共 13 位(不含 +),在 15 位上限内。00 是多数国家的国际字冠,不是一个数字,所以 008613800001234 与 +8613800001234 指向同一号码,但存库应存 + 形式。若号码前面还有一个 0(例如英国固话 020 7946 0958 的本地写法),那是国内长途前缀,补国际格式时要去掉这个前导 0 再加 +CC,否则位数与号码都错。
这一页会不会把我的卡号或号码发出去
不会。校验逻辑全部写在页面的模块里,纯本地计算,不发起任何网络请求,也没有表单提交;数字位只在本 Tab 的内存中被读取和改写。默认打码是代码里的 maskDigits 函数实现的:卡号保留首末各 4 位,手机号保留 +CC、前 3 位与后 4 位,其余按 4 位一组替换为星号。需要注意的是输出区仍是可选中的纯文本,如果你在共享屏幕或录屏,请自己把握是否关闭打码。
对应功能编号 #132无需安装,手机端同样可用按 Ctrl + K 换工具