每一张银行卡号的最后一位都不是随便写的——它是前面所有数字算出来的"校验位"。手误抄错一位、把相邻两位写反,都逃不过这最后一位。输入你的卡号(或随便编一串),看它怎么一步步把错误揪出来。
输入一串数字,右边会按真实算法逐步拆解:从右往左,偶数位 ×2,超过 9 再减 9,全部加起来必须能被 10 整除。
输入任意前缀(比如真实卡组织的 BIN 段),让算法帮你把校验位补上——你会看到最后一位不是随机的,而是被前面的数字"逼"出来的。
卡号前几位(BIN / IIN)由卡组织分配:Visa 以 4 开头、Mastercard 以 5 开头、银联以 62 开头……输入号即可识别。
算法公开、人人可算。它的全部作用就是把"抄错/敲错"提前拦下来——网页、收银台、数据库导入时先过一遍,错误号根本进不了系统。
所有单个数字的错误、以及绝大多数相邻两位互换(比如 18 → 81)。这正是手写录入最常见的两类失误。
只要会算法,随便拼一个前缀就能生成"格式合法"的号。真实支付的安全靠 CVV、3DS 验证、发卡行风控与在线授权——Luhn 和这些都无关。
因为它们用的正是这个公开算法补的校验位——生成的号 Luhn 校验 100% 通过,却依然是一张不存在的卡。所以"Luhn 通过"只说明格式对,绝不说明这张卡真实存在或能用。下次看到哪个网站用 Luhn 当"安全验证",它验证的只是你有没有认真打错字。