Heim >Backend-Entwicklung >PHP-Tutorial >Zusammenfassung des allgemeinen Verifizierungsalgorithmus für Bankkartennummern in PHP

Zusammenfassung des allgemeinen Verifizierungsalgorithmus für Bankkartennummern in PHP

藏色散人
藏色散人nach vorne
2021-07-26 15:23:404320Durchsuche

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 算法

检验数字算法 (Luhn Check Digit Algorithm) 也叫作模数10公式是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国Express、护照、万事达卡、Discover和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn检验数字算法属于大众,任何人都可以使用它

luhn 算法原理

假设现在有一个招行卡号 6225882708965808 (国内一般的主流银行卡号 一般是16位 或者19位 )

步骤一

从最后一位开始 逆向 计算 奇数 位相加之和

如上面的卡号 计算入下

8 + 8 + 6 + 8 + 7 + 8 + 5 + 2 = 52

步骤二

从最后一位开始 逆向偶数 位先乘 2 如果乘积为 2位数 则减去9

LUHN-Algorithmus

Prüfzifferalgorithmus (Luhn Check Digit Algorithm), auch Modul 10-Formel genannt ein einfacher Algorithmus zur Überprüfung der Gültigkeit von Bankkarten- und Kreditkartennummern. Funktioniert mit Kreditkarten aller großen Kreditkartenunternehmen, einschließlich American Express, Passport, MasterCard, Discover und Diners Club. Dieser Algorithmus wurde ursprünglich in den 1960er Jahren von einer Gruppe von Mathematikern formuliert. Jetzt gehört der Luhn-Testnummernalgorithmus der Öffentlichkeit und jeder kann ihn verwenden. Prinzip des Luhn-Algorithmus. Angenommen, es gibt jetzt einen 6225882708965808 (Die inländischen Mainstream-Bankkartennummern sind normalerweise 16 oder 19 Ziffern)

Schritt 1

Beginnen Sie mit der letzten ZifferIn umgekehrter Reihenfolge

Berechnen Sie

die Summe der ungeraden Ziffern

wie berechnet durch die obige Kartennummer. Weiter

0 * 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 mit 2. Wenn das Produkt 🎜2 Ziffern🎜 hat, subtrahieren Sie 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
🎜Schritt 3🎜🎜Fügen Sie die Summe der ungeraden hinzu Ziffern zur Summe der geraden Ziffern. Wenn das Ergebnis gleichmäßig durch 10 geteilt werden kann, bedeutet dies, dass die Überprüfung bestanden wurde Natürlich müssen Sie einige Urteile fällen, bevor Sie an Ihr eigenes Zuhause denken. Schließlich gilt dies nicht zu 100 % für alle Bankkartennummern. 🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜🎜

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen