免费Luhn算法计算器

输入号码以校验

该方法也称为模10算法或mod 10算法,Luhn校验和公式提供了一种简单直接的方法,用于验证信用卡号、礼品卡号等数字序列的结构完整性。这款专门的Luhn算法计算器同时支持校验位生成和号码验证,可作为信用卡号校验器、礼品卡号生成器或IMEI验证器使用。

什么是Luhn算法?

德国计算机科学家汉斯·彼得·卢恩(Hans Peter Luhn)设计了该算法,通过对数字除最后一位(校验位)之外的每一位应用简单算术运算,来捕捉常见的录入错误。计算结果与校验位进行比较;如果一致,则号码通过Luhn检查。单个数字错误和大多数相邻数字换位都能被检测到,但某些两位数替换(例如22↔55, 33↔66, 44↔77)无法被捕获。

Luhn算法逐步工作原理

该方法从右向左处理数字。以数字23459034为例:最右边的数字(4)是校验位,其余部分为2345903。

  1. 每隔一位数字加倍 – 从截断部分的最后一位(即3)开始向左移动: 2→4,3不变为3,4→8,5不变为5,9→18,0不变为0,3→6。

  2. 调整值≥10的数字 – 如果任何加倍后的数字大于或等于10,则减去9。这里18变成9。

  3. 将所有结果数字相加 – 4 + 3 + 8 + 5 + 9 + 0 + 6 = 35。

  4. 与校验位比较 – 和模10为35 mod 10 = 5。原始校验位是4,因此23459034无效。如果校验位是5,则号码23459035有效。

这个简单示例说明了算法如何作为校验和发挥作用。

如何使用计算器

在线Luhn算法计算器提供两种模式:

  • 生成校验位 – 输入任何正整数,工具会返回必须附加的数字,以使完整号码通过验证。可用作礼品卡号生成器或Luhn数字生成器。
  • 验证号码 – 输入一个已经包含校验位的号码。计算器运行算法并告知您该号码是否有效。如果无效,工具会显示正确的校验位。

应用与局限性

Luhn验证作为更全面验证之前的预过滤器,广泛用于支付行业。通过Luhn检查仅确认号码格式正确;它并不保证存在实际账户、活跃卡或有效礼品卡。真实的账户验证需要额外步骤,例如数据库查找或加密方法(如RSA)。

模10算法的一个已知限制是,无法捕获某些两位数交换,如22↔55、33↔66和44↔77。尽管如此,该算法仍然是防止意外输入错误的可靠第一道防线。

附加信息

信用卡号并非随机生成;它们遵循发卡机构的特定规则并满足Luhn检查。第一位数字表示卡网络(4代表Visa,5代表Mastercard等),其余数字编码发卡机构和账户号,最后一位是Luhn校验位。除了支付领域,同一算法还出现在IMEI码、某些交通票号和零售会员卡中。

常见问题

1. 什么是Luhn验证?

Luhn验证使用模10算法来验证数字的校验位是否与计算出的校验和匹配。它通常应用于信用卡和礼品卡号,作为更详细验证前的结构预检查。

2. 如何计算给定数字的Luhn校验位?

将最后一位数字(校验位)与其余部分分开。从剩余部分的最右边数字开始,每隔一位数字加倍。对于任何加倍后≥10的值,减去9。将所有数字相加。校验位就是使该总和成为10的倍数的数值(即,使sum mod 10等于0的数字)。在线Luhn计算器可以自动执行此操作。

3. 一个数字能否通过Luhn验证但实际上仍然无效?

可以。通过Luhn检查只确认号码结构正确。并不代表其后存在真实的账户、活跃的卡或有效的礼品卡。实际有效性需要额外的验证步骤。

4. Luhn算法无法检测哪些类型的错误?

算法无法捕捉某些两位数替换,例如22↔55、33↔66和44↔77。也可能遗漏涉及两个以上数字的重叠错误。

5. 信用卡号与Luhn算法有什么关系?

信用卡号的结构使其能通过Luhn检查。第一位数字标识卡网络(例如4代表Visa),后续数字编码发卡机构和账户,最后一位作为Luhn校验位。这确保了在进一步验证之前就能捕获常见的打字错误。

使用方法

  1. 选择一个模式:验证号码或计算校验位。
  2. 在输入框中输入号码。仅接受数字。
  3. 查看结果 - 号码已通过Luhn模10算法校验。