Luhn 算法校验工具

Luhn 仅验证校验位,不代表卡片仍然有效。

Luhn算法(ISO/IEC 7812-1)是一种校验码,可保护信用卡号、IMEI设备标识符、加拿大SIN号码、美国NPI号码以及其他多种编号格式免受单个数字输入错误的影响。只需输入一个数字序列(空格和连字符均不计入),校验工具便会判断该数字是否通过验证,并自动执行倍增与求和运算步骤;如需手动核验,亦可随时进行。

Luhn校验码的计算方法

  1. 1

    去除非数字字符

    空格、连字符和点会被移除,仅计入数字 0–9。

  2. 2

    从右开始将每个第二位数字翻倍

    从倒数第二个数字开始,每隔一位数字均翻倍。

  3. 3

    将每个被加倍数值的各位数字相加。

    若倍增结果为14,则需加1 + 4 = 5;这等价于从任何大于等于10的倍数值中减去9。

  4. 4

    所有最终计算结果的总和

    将加倍后的数字、减去后的数字以及未改变的数字相加。

  5. 5

    检查是否能被 10 整除

    如果总数以0结尾,则该数字有效;否则无效。

工作示例

检查 4539 1488 0343 6467

位置(右→左) 数字 是否加倍?
1 7 7
2 6 12 → 3
3 4 4
4 6 12 → 3
5 3 3
6 4 8
7 3 3
8 0 0
9 8 8
10 8 16 → 7
11 4 4
12 1 2
13 9 9
14 3 6
15 5 5
16 4 8

总数:80。80 ÷ 10 = 0 → 有效

使用 Luhn 的场景

系统 长度 是否受Luhn保护?
Visa、Mastercard、Discover 13–19 位数字
美国运通卡 15位数字
IMEI(GSM设备识别码) 15位数字
加拿大社会保险 9位数字
美国国家服务提供者标识符 10位数字
以色列身份证(Teudat Zehut) 9位数字
ISBN-13 13位数字 否(采用模10运算,权重为1和3)

Luhn 检测到但遗漏的内容

  • **可检测内容:**所有个位数错误,以及大多数(但非全部)相邻数字的调位情况。
  • 遗漏项: 位置互换 09 ↔ 90 及若干类似组合。此为拼写检查,非安全验证。
  • **并非安全功能。**生成Luhn有效号码十分简单。支付网关中的PAN验证采用发卡机构代码范围、 CVV 码、 AVS 码及3D安全码等多种方式,而不仅限于Luhn码。

常见问题

不。Luhn仅验证号码在数学上是否格式正确,并无法判断该卡是否已发行、是否持有资金或是否被盗。真正的验证过程发生在发卡机构进行授权时。

没错,末位数字即校验位,可随时设置为使总和能被10整除。这正是IMEI生成器及测试卡号码的工作原理。

该方法能够检测所有个位数替换以及大多数相邻数字的置换,但少数组合(如09 ↔ 90)会使校验和保持不变。更稳健的方案(如ISBN-13、Verhoeff方案、Damm方案)则以增加计算复杂度为代价来提升错误检测能力。

该验证工具完全在您的浏览器中运行,因此无需传输任何数据,但随意粘贴真实的PAN号码属于不良习惯。进行测试时,请使用示例号码(例如:4242 4242 4242 4242)。

Luhn支持任意长度,但针对特定方案(通常为9至19位数字)进行了标准化。该校验器不设置长度上限。

相关工具

此工具还提供其他语言版本