Luhn算法计算器
使用许多卡号和标识号码采用的 Luhn Mod 10 校验和,验证数字序列。
验证号码
仅输入数字,并包含末尾校验位。
关于Luhn算法
Luhn算法是一种简单的校验和公式,用于检测数字串中的常见错误。它也称为 Mod 10 算法,因为有效序列经变换后的总和能被十整除。信用卡账号是其最广为人知的用途,但该方法也用于 IMEI 设备标识、国家身份识别系统、会员编号和其他结构化代码。本计算器只检查数学一致性,不会联系发卡机构,也不会确认账户是否存在。
验证从最右侧数字开始,该数字视为校验位。从右往左,每隔一位将数字加倍。若加倍后大于九,则减去九,这等价于将加倍结果的两位数字相加。其余位置的数字保持不变。将所有变换后的值相加,总和除以十的余数为零时,完整号码就通过Luhn校验。
例如,修改单个数字通常会改变校验和余数,使序列无效。该方法还能检测大多数相邻数字交换,覆盖许多打字错误。但它不是密码学哈希。不同的错误序列可能有相同余数,任何人也都能刻意构造可通过校验的校验位。因此,Luhn验证应作为早期数据质量检查,绝不能作为身份、授权、真实性或可用资金的证明。
计算器在浏览器本地处理数字。输入完整号码,包含现有的末尾校验位,然后选择“验证号码”。结果会说明变换后的总和是否能被十整除,并显示余数。余数为一至九时,表示号码不满足校验和要求。示例使用已公开的测试型数字序列,而非真实账户资料。
如果合成测试号码已能满足需求,请勿向工具输入敏感的真实金融数据。虽然本实现不执行网络查询,良好的安全实践仍要求尽量减少账户标识的暴露。开发者可在测试表单验证时使用本计算器,支持团队可使用脱敏示例排查抄录错误,学生则可跟随运算理解加权校验和。通过测试只说明序列符合Luhn公式,后续仍需进行适当且安全的业务验证。
Luhn算法示例
| 号码 | 结果 | 说明 |
|---|---|---|
| 4532015112830366 | 有效 | 变换后的数字总和余数为零。 |
| 4532015112830367 | 无效 | 修改末位数字后,校验和余数变为一。 |
| 79927398713 | 有效 | 这个经典演示序列满足 Mod 10 校验。 |
| 79927398714 | 无效 | 修改后的校验位不再满足校验和要求。 |
如何用Luhn算法验证号码
- 输入完整数字序列,包括末尾校验位。
- 确认输入仅含数字,没有空格或标点。
- 选择“验证号码”,从右侧开始隔位加倍。
- 查看有效性提示和校验和余数。
Luhn算法常见问题
通过Luhn校验能证明什么?
只能证明数字序列满足 Mod 10 校验和。不能证明账户存在、处于有效状态或属于任何人。
哪一位是校验位?
在完整的Luhn保护序列中,最右侧数字通常是校验位。使用本验证器时请包含它。
Luhn算法能检测哪些错误?
它能检测所有单个数字替换和大多数相邻数字换位,但不能检测所有可能的多位数字变化。
Luhn是安全或加密算法吗?
不是。它是公开的错误检测公式,不提供保密或身份认证。安全系统必须单独进行授权和发卡机构检查。
可以验证含空格或连字符的号码吗?
本计算器有意仅接受数字,以确保输入内容明确无歧义。验证前请去除格式字符。