增强Luhn算法的实现?

时间:2017-03-27 17:28:22

标签: checksum credit-card modulus pci-dss luhn

有没有人知道增强或增强的Luhn公式的任何实现,用于检查支付卡上的模数10“双加双”校验位?

本文提出了增强功能:http://d.researchbib.com/f/6nnJcwp21wYzAioF9xo2AmY3OupTIlpl9XqJk5ZwNkZl9JZxx3ZwNkZmpmYaOxMt.pdf

增强的Luhn检查是否具有实际用途?

2 个答案:

答案 0 :(得分:1)

这篇论文被同行评审期刊接受,这有点奇怪。该论文描述了在20世纪70年代基本上被确定为弗莱彻校验和的问题;它的长度和数据转置无法准确检测。

但是让我们考虑一下这个提案的实际方面。如果你真的深入研究细节,那么实施起来实际上是不可行的。

Luhn算法是一种简单,省力的方法来验证卡号。当信用卡开始以电子方式进行广泛处理时(之前已经完成了纸质印记),没有永远在线的网络来调用服务进行验证。可以实现Luhn而无需网络连接来执行验证。这是建立不可行性的第一个前提:您必须能够执行验证而无需遍历网络。

这种“无网络遍历”前提使得MII查找不可行。有两种方法可以实现这一点:

  1. 执行MII查找的Web服务。这意味着每次数据输入都需要一次网络呼叫才能在网络呼叫之前验证卡号以处理付款。验证调用可能需要比事务处理更长或更长的时间。在验证的情况下,它必须是同步的 - 用户需要等待结果才能继续订单。如果由于某种原因无法完成呼叫,则客户可能只是在其他地方订购。
  2. 处理卡授权可以是异步的。亚马逊这样做;他们确认收到您的订单,并且通常会在稍后确认付款处理。

    1. 定期将MII数据库分发到所有设备。每个手机应用程序,支付终端,网站,ERP等都将不断需要添加新的MII并删除旧的MII。其中许多可能在一段时间内过时,导致某些商家拒绝交易,但在使用同一张卡时批准了其他商家的交易。消费者会不信任使用这些卡片。
    2. 最后,作者对卡的长度做出了错误的假设。 Luhn算法适用于许多长度,因为卡号长度可以长于或短于16位。美国运通卡的消费卡为15位,其他卡为16位。商业卡可以超过16位数;我见过商用空气卡达20位数。如果作者看过IEC / ISO 7812标准,那就可以理解了。标准委员会甚至建议延长标准卡号的长度。最棒的是,当卡片编号长度延长时,Luhn算法仍会验证卡片。

      帮自己一个忙,依靠Luhn作为你的第一步,然后让处理器通过现有的卡处理网络验证卡无可否认是正确的,为你做重任务。

答案 1 :(得分:1)

我进行了Google搜索,并在软件开发人员Pawel Decowski的Luhn检查中发现了Hussein等人提出的两种增强功能的软件实现。这是他的jQuery信用卡验证器,(Decowski,2015/2016)。我推测Decowski受Hussein等人的影响。

Decowski,P。(2015/2016)jquery-creditcardvalidator [在线]。可在https://github.com/PawelDecowski/jquery-creditcardvalidator处获取(2017年4月11日访问)。