Kürzlich habe ich aufgrund der Anforderungen des Unternehmens eine API
geschrieben, die einige Informationen zur Bankkartennummer erfordert. In Bezug auf diese Verifizierungsregel habe ich viele grobe Überprüfungen gefunden, z. B. das Abrufen der Anzahl der Ziffern. Später fand ich einen Kumpel, der eine ausführlichere Einführung in die Regeln zum Generieren von Bankkarten schrieb und eine kurze Zusammenfassung verfassteAPI
其中需要一些银行卡号的信息 关于这个验证正则找了好多 都是些大致性的校验 比如数字拉 位数啦,后来发现一哥们写了个比较详细的介绍银行卡的生成规则 做个小总结
检验数字算法 (Luhn Check Digit Algorithm) 也叫作模数10公式是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国Express、护照、万事达卡、Discover和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn检验数字算法属于大众,任何人都可以使用它
假设现在有一个招行卡号 6225882708965808
(国内一般的主流银行卡号 一般是16位 或者19位 )
从最后一位开始 逆向 计算 奇数 位相加之和
如上面的卡号 计算入下
8 + 8 + 6 + 8 + 7 + 8 + 5 + 2 = 52
从最后一位开始 逆向 将 偶数 位先乘 2
如果乘积为 2位数 则减去9
6225882708965808
(Die inländischen Mainstream-Bankkartennummern sind normalerweise 16 oder 19 Ziffern)
Schritt 1die Summe der ungeraden Ziffern
wie berechnet durch die obige Kartennummer. Weiter0 * 2 = 0 5 * 2 = 10 - 9 = 1 9 * 2 = 18 - 9 = 9 0 * 2 = 0 2 * 2 = 4 8 * 2 = 16 - 9 = 7 2 * 2 = 4 6 * 2 = 12 - 9 = 3 最后计算结果 0 + 1 + 9 + 0 + 4 + 7 + 4 + 3 = 28
Schritt 2beginnen Sie mit der letzten Zifferumgekehrt
Multiplizieren Sie die 🎜geraden 🎜 Ziffern zuerst mit2
. Wenn das Produkt 🎜2 Ziffern🎜 hat, subtrahieren Sie < code>9 code> Wenn das Produkt beim Summieren nicht 🎜2-stellig🎜 ist, fügen Sie es direkt hinzu🎜🎜Zum Beispiel wird die obige Kartennummer wie folgt berechnet🎜52 + 28 = 80 80 % 10 = 0
Das obige ist der detaillierte Inhalt vonZusammenfassung des allgemeinen Verifizierungsalgorithmus für Bankkartennummern in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!