我正在输入我的抄送号码,一旦我输入完 16 位数字,它就会以红色突出显示。我仔细看了看,发现一个数字是错误的。改正一下,变黑了。网站怎么知道错了?
该网站如何在处理之前告诉我的信用卡是错误的?
信用卡号码可以通过计算校验和来验证。
创建的每个信用卡号都会按照算法分配一个编号。
Ross Millikan:校验和指定最后一位,所以还有 15 位。这应该意味着有 10^15 个数字可用,但还有其他限制。第一个数字是卡类型(4 = Visa,5 = MasterCard 等),接下来的几个数字与发行人有关。
之后,如果这个信用卡号码不符合算法,则校验和不正确,因此该号码一定是无效的。
该算法称为“Luhn 算法”,查看此Wikipage了解更多信息。
TripeHound:注意:如果给定的号码未通过检查,则绝对不是真正的 CC 号码。但是,如果它通过了检查,它只证明它是一个潜在的CC号:它并不证明它实际上已经被签发。验证的下一阶段(与卡处理器交谈)应该验证这一点。可以对英国排序代码/帐号对(在其他国家可能类似)和国际银行帐号 (IBAN)进行类似检查
编辑:添加了答案评论中给出的一些信息。请也给他们一个Upvote,这是很好的信息。
大多数信用卡提供商对其信用卡号使用某种形式的校验和,通常是Luhn 算法。验证 Luhn 算法就像在一个数字上执行它并获得 0 作为结果一样简单。如果得到不同的结果,则校验和失败。
您可以在 Wikipedia 的支付卡号码页面上看到信用卡号码发行人可以通过其前缀和位数来识别,并且直到今天,单个发行人(Diners Club enRoute)还没有使用 Luhn Check。
通常在验证输入时尽早使用 Luhn Check,以便更快地向用户提供反馈,并降低处理成本。
正如您在 Wikipedia 文章中看到的那样,该算法被许多其他类型的数字使用。这是防止多种错别字或传输错误的一种相当简单的方法。但是,这并不是万无一失的,最值得注意的是,某些简单的错误,例如颠倒两个连续数字的顺序,是不会被检测到的。