Zum Inhalt springen
OneKitly

Testkartennummern: wozu der Luhn-Algorithmus wirklich da ist und was er dir nicht sagen kann

Veröffentlicht am 5.8.2026 · 14 Min. Lesezeit · Entwickler-Tools

Daniel Okonkwo

Daniel OkonkwoFront-end-Entwickler und Tech-Redakteur bei OneKitly

Web-Performance · Dateiformate

Anhand von 4 Quellen geprüft

Profil ansehen
Kurz gesagt

Die Luhn-Formel ist ein Prüfziffernverfahren, für das Hans Peter Luhn im Januar 1954 ein Patent anmeldete, erteilt im August 1960 als US 2.950.048 unter dem Titel Computer for Verifying Numbers, seither übernommen als Prüfziffer des in ISO/IEC 7812-1 genormten Kartennummernsystems. Es arbeitet von rechts: Verdopple jede zweite Ziffer, ziehe von jedem Ergebnis über neun die neun ab, addiere alles, und eine gültige Nummer ergibt eine durch zehn teilbare Summe. Bei 4242 4242 4242 4242 werden die acht Vieren je zu acht und die acht Zweien bleiben, macht 64 plus 16, also 80 — durch zehn teilbar, die Nummer besteht. Das ist der ganze Algorithmus und die ganze Zusicherung. Durchprobieren zeigt genau, was er dir bringt: Alle 144 Einzelziffernvertauschungen an dieser Nummer werden erkannt, und das Vertauschen zweier benachbarter Ziffern in 88 von 90 möglichen Fällen, die zwei Ausnahmen sind 09 gegen 90. Ebenso entgehen ihm die Zwillingsfehler 22 gegen 55, 33 gegen 66 und 44 gegen 77. Es ist eine Tippkontrolle, mehr nicht. Es ist keine Sicherheitsmaßnahme, kann es nicht sein, und eine Nummer, die besteht, sagt nichts darüber, ob ein Konto existiert, gedeckt ist oder autorisiert würde — das weiß nur der Herausgeber, und nur wenn dein Dienstleister ihn bei der Autorisierung fragt. Die Ausgabe dieses Generators auszuführen bestätigt die Mechanik: 120 000 Nummern über sechs Marken, jede einzelne Luhn-gültig, richtige Längen und richtig breite Sicherheitscodes. Was dir das bringt, ist ein Weg, die clientseitige Prüfung deines Formulars zu erproben. Um eine Zahlungsintegration wirklich zu testen, nimm die Nummern, die dein Dienstleister dokumentiert — Stripe, Adyen und PayPal veröffentlichen je eigene, gebaut um bestimmte Ablehnungscodes auszulösen. Eine erzeugte Nummer, die mit 4242 beginnt, ist nicht Stripes 4242 4242 4242 4242, und sie wird dich nichts lehren.

Luhn ist eine Prüfsumme zum Abfangen von Tippfehlern, 1960 patentiert, und das ist ihre ganze Aufgabe. Eine Nummer, die sie besteht, sagt dir über kein Konto etwas. Um eine Zahlungsintegration zu testen, brauchst du die veröffentlichten Nummern deines Dienstleisters, keine erzeugte.

Der Algorithmus, so durchgerechnet, dass du ihn von Hand prüfen kannst

Beginne bei der äußersten rechten Ziffer, der Prüfziffer, und lass sie in Ruhe. Geh nach links und verdopple jede zweite Ziffer — die unmittelbar links der Prüfziffer, danach jede übernächste. Ergibt das Verdoppeln mehr als neun, ziehe neun ab, was dasselbe ist, wie die beiden Ziffern des verdoppelten Werts zu addieren. Nun addiere alle Ziffern der Nummer, verdoppelt oder nicht. Ist die Summe durch zehn teilbar, besteht die Nummer.

Nimm 4242 4242 4242 4242, die meistveröffentlichte Testnummer der Welt. Sechzehn Ziffern, die Verdopplungsstellen sind also die erste, dritte, fünfte und so fort von links — alle acht Vieren. Jede Vier verdoppelt sich zu acht, was nicht über neun liegt, es wird also nichts abgezogen. Die acht Zweien bleiben unangetastet. Die Summe ist achtmal acht, also 64, plus achtmal zwei, also 16, macht 80. Achtzig durch zehn ergibt acht ohne Rest, die Nummer ist also gültig. Ein zweites Beispiel mit gemischten Ziffern, falls die Wiederholung die Methode verdeckt: 4539 1488 0343 6467 ergibt die Folge 8, 5, 6, 9, 2, 4, 7, 8, 0, 3, 8, 3, 3, 4, 3, 7, die ebenfalls 80 ergibt.

Eine gültige Nummer zu erzeugen statt eine zu prüfen, ist dieselbe Rechnung rückwärts. Nimm die gewünschten Ziffern ohne die letzte, bilde die Summe wie oben und behandle die fehlende Stelle als Prüfziffer, und die Prüfziffer ist das, was die Summe auf das nächste Vielfache von zehn hebt. Für 424242424242424 lautet die Antwort 2. Für 37828224631000, einen Amex-Körper aus vierzehn Ziffern, ist es 5, und so entsteht 378282246310005 als veröffentlichte Amex-Testnummer. Mehr macht ein Generator nicht.

Was er fängt, durchprobiert

Über Luhn wird gewöhnlich behauptet, er fange alle Einzelziffernfehler und fast alle Vertauschungen benachbarter Ziffern. Beide Hälften lassen sich erschöpfend prüfen statt glauben. Ändere eine Ziffer von 4242 4242 4242 4242 in jeden der neun anderen Werte, an jeder der sechzehn Stellen: Alle 144 entstehenden Nummern fallen durch. Dieser Teil ist vollständig: Jede einzelne falsch getippte Ziffer wird gefangen, immer.

Die Vertauschungshälfte ist beinahe vollständig, und die Ausnahme ist genau bestimmt. Bilde eine gültige Nummer, die auf jedes der neunzig geordneten Paare verschiedener Ziffern endet, tausche diese beiden Ziffern und prüfe erneut: Achtundachtzig der neunzig Vertauschungen zerstören die Prüfsumme. Die beiden, die durchkommen, sind 09 zu 90 und 90 zu 09. Der Grund ist arithmetisch und nicht rätselhaft — das Verdoppeln von 0 ergibt 0, das Verdoppeln von 9 ergibt 18, was zu 9 wird, diese beiden Ziffern steuern also unabhängig von der Position dasselbe bei, und ihr Tausch ändert nichts. Es gibt einen zweiten, seltener genannten blinden Fleck derselben Familie: die Zwillingsfehler, bei denen ein verdoppeltes Paar als anderes verdoppeltes Paar getippt wird. 55 statt 22, 66 statt 33 oder 77 statt 44 lässt die Summe unverändert und besteht.

Dem gegenüber steht, was die Prüfung gar nicht versucht. Sie hat kein Geheimnis, keinen Schlüssel und keinen Zustand. Jeder berechnet in einer Sekunde eine gültige Nummer, und die neunzig Prozent sechzehnstelliger Zeichenketten, die durchfallen, sind das Einzige, was sie ausschließt. Das ist der richtige Entwurf für ihren Zweck: eine Kundin abzufangen, die eine Ziffer ihrer eigenen Karte falsch getippt hat, bevor du einen Netzwerkumlauf und eine Gebühr dafür ausgibst, es herauszufinden. Sie sollte nie feststellen, dass eine Karte existiert, und dazu lässt sie sich auch nicht bringen.

Nummer, Konto und Autorisierung sind drei verschiedene Dinge

Eine Kartennummer hat Struktur. Die führenden Ziffern sind die Herausgeberkennung, die Netz und Institut bezeichnet und nach ISO/IEC 7812-1 vergeben wird; die Ziffern danach sind die vom Herausgeber vergebene Kontokennung; die letzte ist die Prüfziffer. Struktur ist alles, was sie ist. Zu wissen, dass eine Nummer mit einem gültigen Herausgeberpräfix beginnt und mit einer korrekten Prüfziffer endet, sagt dir, dass die Zeichenkette wohlgeformt ist — genau so, wie eine korrekt geschriebene Postleitzahl nichts darüber sagt, ob dort ein Haus steht.

Ob hinter der Nummer ein Konto steht, ob es offen ist, ob es für den Betrag reicht, ob die Risikoregeln des Herausgebers diesen Händler an diesem Tag zulassen — nichts davon steckt in den Ziffern. Das beantwortet eine Autorisierungsanfrage: Dein Dienstleister schickt die Daten ans Netz, das Netz leitet sie an den Herausgeber, und der Herausgeber antwortet mit einer Genehmigung oder einem Ablehnungscode. Dieser Umlauf ist das Einzige, das es weiß. Er ist auch das Einzige, das wegen fehlender Deckung, einer als verloren gemeldeten Karte oder eines nicht passenden Sicherheitscodes ablehnen kann — also genau die Bandbreite an Ergebnissen, die deine Kasse richtig behandeln muss.

Deshalb veröffentlichen die Dienstleister Testnummern, statt dir zu sagen, du sollst eigene erzeugen. Stripe dokumentiert eine bestimmte Nummer je Marke und einen weiteren Satz, der benannte Fehlschläge erzeugt, damit du einen Test schreiben kannst, der prüft, ob deine Seite die richtige Meldung zeigt, wenn eine Karte wegen fehlender Deckung und nicht wegen eines falschen Sicherheitscodes abgelehnt wird. Adyen veröffentlicht eine eigene Liste und sagt unumwunden, dass diese Nummern nur mit seiner Testplattform funktionieren und auf anderen Plattformen nicht. PayPal veröffentlicht Kartendaten für seine Sandbox. Jede Liste hängt an der Testumgebung eines Dienstleisters, und sie existiert, weil das Nützliche nicht ist, ob eine Zeichenkette wie eine Karte aussieht, sondern ob dein Code mit dem umgeht, was zurückkommt.

Was dieser Generator ausgibt, geprüft an den veröffentlichten Bereichen

Die Mechanik sitzt. Zwanzigtausend Nummern je Marke über sechs Marken, 120 000 insgesamt, und jede einzelne besteht die Luhn-Prüfung — kein einziger Fehlschlag, nach jeder Änderung an den Bereichen erneut geprüft. Jedes erzeugte Präfix fällt in einen Bereich, den das Netz tatsächlich veröffentlicht. Die Längen folgen der Marke: sechzehn Ziffern für Mastercard, Discover und JCB, fünfzehn für American Express, vierzehn für den genutzten Diners-Bereich, und Visa in neun von zehn Fällen mit sechzehn Ziffern, mit dreizehn und neunzehn zu je einem Zwanzigstel, denn Visa gibt alle drei aus, und ein Formular, das nur sechzehn annimmt, hat einen Fehler, den dir gleichförmige Testdaten nie zeigen. Auch die Prüfziffernbreiten stimmen: drei Ziffern überall außer bei American Express, wo es vier sind.

Mastercard ist der Bereich, den man verstehen sollte — wegen der Ziehung, nicht wegen einer Lücke. Das Netz war jahrzehntelang 51 bis 55; seit 2017 gibt es auch in der 2er-Serie aus, einer Spanne von 222100 bis 272099, die Händler ab Mitte 2017 akzeptieren mussten. Eine flache Präfixliste kann das nicht ausdrücken — es sind fünfhunderttausend sechsstellige Präfixe —, also wird jeder Bereich als einschließende Zahlenspanne gehalten und das Präfix darin gezogen. Die zwei Bereiche werden gleich häufig gezogen, je zur Hälfte, und das ist eine Testdaten-Entscheidung und kein Abbild des Marktes. Nach Karten im Umlauf gewichtet wären es für die 2er-Serie wenige Prozent, und bei der Voreinstellung von fünf Karten bekäme eine Entwicklerin nie eine zu sehen — genau der Fehler, den es zu vermeiden gilt. Zwanzigtausend erzeugte Mastercards teilen sich 49,7 zu 50,3 auf. Wurde dein Prüfmuster vor 2017 geschrieben oder aus der Ausgabe eines Generators statt aus den veröffentlichten Bereichen des Netzes, lehnt es eine echte 2er-Karte ab, und du erfährst es von einer Kundin.

Ein eigenes Präfix überschreibt die Marke nicht mehr, denn die Marke wird gar nicht mehr aus der Auswahlliste genommen — sie wird aus den Ziffern gelesen. Tippe 51, und du bekommst eine Mastercard, egal was die Typauswahl sagt. Tippe eine einzelne 9, eine erste Ziffer, die ISO/IEC 7812-1 der nationalen Vergabe vorbehält und die keinem Netz gehört, und die Karte kommt als unbekannte BIN auf einer neutral grauen Fläche zurück, statt als Visa verkleidet. Ein kurzes Präfix beansprucht einen Bereich nur, wenn jede Nummer, die es erzeugen könnte, hineinfällt: 51 ist eine Mastercard, eine bloße 5 nicht, weil 50 und 56 bis 59 es nicht sind — eine halb getippte BIN liest sich daher als unbekannt, was die ehrliche Antwort ist, solange das Feld noch gefüllt wird. Die aus den Ziffern gelesene Marke steuert danach den Rest der Karte: Länge und Prüfziffernbreite folgen dem Präfix statt der Auswahlliste, eine getippte Amex-BIN bekommt also fünfzehn Ziffern und einen vierstelligen Code. Die Liste fertiger Präfixe hatte dieses Problem nie: Wer eine wählt, legt die Marke passend fest.

Noch etwas zur Präfix-Auswahlliste, dem nützlichsten Teil des Werkzeugs und zugleich dem am leichtesten misszuverstehenden. Die elf angebotenen Präfixe — 4242, 4000, 5555, 5200, 3782, 6011, 3566, 3622, 4111, 5100 und 4032 — sind die führenden Ziffern der Nummern, die die Zahlungsdienstleister als Testdaten veröffentlichen, nicht die echter Banken, und die Seite sagt das auch. Aber eine erzeugte Nummer, die mit 4242 beginnt, ist nicht Stripes Testkarte. Stripes Testkarte ist genau 4242 4242 4242 4242, eine bestimmte Zeichenfolge; der Generator liefert eine andere, zufällige, Luhn-gültige Nummer mit denselben ersten vier Ziffern, und die Testumgebung eines Dienstleisters erkennt die dokumentierte Nummer, nicht das Präfix. Ein gewähltes Präfix legt außerdem die Länge auf die kanonische der Marke fest: Eine 4242 kommt immer mit sechzehn Ziffern zurück und nie in Visas selteneren Formen mit dreizehn oder neunzehn. Nutze die Auswahlliste, damit deine Testdaten plausibel aussehen. Nutze die Dokumentation des Dienstleisters, damit sie funktionieren.

Jede Marke, die der Generator anbietet, und die veröffentlichten Bereiche, aus denen er zieht
MarkeWas das Werkzeug erzeugtWas das Netz ausgibt
VisaPräfix 4; 16 Ziffern in 90 % der Fälle, 13 und 19 zu je 5 %, 3-stelliger CodePräfix 4; 16 Ziffern sind die Regel, 13 und 19 gibt es auch
Mastercard51 bis 55 und 222100 bis 272099, je zur Hälfte gezogen51 bis 55 und die 2er-Serie 222100 bis 272099, seit 2017 im Umlauf
American Express34 und 37, 15 Ziffern, 4-stelliger Code34 und 37, 15 Ziffern, 4-stelliger Code — vollständig und korrekt
Discover6011, 65, 644 bis 649 und 622126 bis 622925, gewichtet 40/30/20/106011 und 65, dazu die Bereiche 644 bis 649 und 622126 bis 622925
JCBJedes Präfix von 3528 bis 3589Der ganze Bereich 3528 bis 3589
Diners Club36, 300 bis 305, 38 und 39, immer 14 Ziffern36, 38 bis 39 und der Bereich 300 bis 305; auch 16-stellige Formen zirkulieren
Zufälliger Testkarten-GeneratorErzeuge Luhn-gültige Testkartennummern (Visa, Mastercard, Amex…) mit Ablauf und CVV — nur zum Testen.Tool ausprobieren

Häufige Fragen

Bedeutet eine bestandene Luhn-Prüfung, dass die Karte echt ist?
Nein, nicht im Geringsten. Luhn ist eine Prüfsumme ohne Schlüssel und ohne Geheimnis: Jeder berechnet in unter einer Sekunde eine gültige Nummer, und ungefähr eine von zehn sechzehnstelligen Zeichenketten besteht zufällig. Ausgeschlossen werden die neun von zehn, die durchfallen — ein Filter für Tippfehler, mehr nicht. Ob hinter der Nummer ein Konto steht, ob es offen ist und ob es einen bestimmten Betrag autorisieren würde, kann nur der Herausgeber beantworten, über eine von deinem Zahlungsdienstleister geleitete Autorisierungsanfrage. Deshalb läuft die Prüfung im Browser vor dem Absenden der Anfrage und nicht an ihrer Stelle.
Kann ich eine erzeugte Nummer nutzen, um meine Zahlungsintegration zu testen?
Für die clientseitige Hälfte ja: Eine wohlgeformte Nummer mit der richtigen Länge und einer gültigen Prüfziffer ist genau das, was du brauchst, um zu sehen, ob dein Formular sie annimmt, in Vierergruppen setzt, das richtige Markensymbol zeigt und drei statt vier Ziffern verlangt. Für alles danach nein. Die Testumgebung eines Dienstleisters erkennt die konkreten Nummern, die er veröffentlicht, und eine Zufallsnummer, die mit einer davon die ersten vier Ziffern teilt, ist keine davon. Stripe, Adyen und PayPal dokumentieren je eine Liste, und der nützliche Teil dieser Listen sind die Nummern, die absichtlich scheitern — eine für fehlende Deckung, eine für eine verlorene Karte, eine für einen nicht passenden Sicherheitscode — denn eine Ablehnung richtig zu behandeln ist der Teil einer Kasse, der tatsächlich bricht.
Welche Vertauschungen entgehen Luhn?
Genau ein benachbartes Paar: 09 als 90 getippt und 90 als 09. Prüfe alle neunzig geordneten Paare verschiedener Ziffern, und achtundachtzig der Vertauschungen werden gefangen. Die Ausnahme folgt aus der Rechnung: Verdoppeln von 0 ergibt 0, Verdoppeln von 9 ergibt 18, was zu 9 wird, das Paar steuert also in beiden Reihenfolgen 9 bei. Es gibt einen zweiten, seltener genannten blinden Fleck aus einer anderen Familie: die Zwillingsfehler, bei denen ein verdoppeltes Paar als anderes verdoppeltes Paar getippt wird. 55 statt 22, 66 statt 33 oder 77 statt 44 lässt die Prüfsumme unverändert und besteht. Beides sind bekannte Grenzen eines in den 1950er-Jahren entworfenen Verfahrens, das eine von Hand abgeschriebene Ziffer abfangen sollte, und beides ist für Sicherheit ohne Belang, denn Luhn war nie eine Sicherheitsmaßnahme.
Warum lehnt meine Prüfung eine echte Mastercard ab, die mit 2 beginnt?
Weil die Regel gegen den alten Bereich geschrieben wurde. Mastercard war jahrzehntelang 51 bis 55, und sehr viele Prüfmuster sagen das immer noch. Das Netz nahm 2017 die 2er-Serie hinzu, einen Bereich von 222100 bis 272099, und Händler mussten sie akzeptieren. Ein älteres Muster erbt die Lücke, und eines, das aus der Ausgabe eines Generators abgeleitet wurde, der nur 51 bis 55 lieferte, ebenfalls — genau das tat dieser früher. Inzwischen zieht er beide Bereiche gleich häufig, seine Ausgabe deckt also beide ab; schreib das Muster trotzdem gegen die veröffentlichten Bereiche des Netzes und nicht gegen irgendeinen Generator, und behandle die Markenerkennung am Präfix als Wartung statt als einmalige Arbeit, denn die Bereiche ändern sich.
Ist es überhaupt zulässig, Kartennummern zu erzeugen?
Eine Prüfziffer zu berechnen ist Arithmetik, und Arithmetik allein ist nicht die Frage. Es zählt, wofür die Nummer benutzt wird. Eine Testvorlage zu bauen, um ein Formular zu erproben, ist gewöhnliche Softwarearbeit; zu versuchen, mit einer Nummer, die dir niemand ausgestellt hat, Waren oder Leistungen zu erhalten, ist überall Betrug, unabhängig davon, ob sie zufällig eine Prüfsumme erfüllt. Ein nützlicher Mittelweg existiert hier nicht, denn eine erzeugte Nummer kann ohnehin nichts kaufen: Dahinter steht kein Konto, und kein Herausgeber wird sie autorisieren. Der praktische Rat deckt sich mit dem technischen: Nimm die veröffentlichten Testnummern deines Dienstleisters, behalte sie in deiner Testsuite, und bringe nie eine echte Kartennummer in eine Entwicklungsumgebung — wozu dein Vertrag mit diesem Dienstleister und der Datensicherheitsstandard der Kartenbranche beide sehr viel zu sagen haben.

Artikel, die dich interessieren könnten

Alle Ratgeber
RatgeberTestdaten ohne echte Menschen: warum pseudonymisiert weiterhin personenbezogen ist und synthetisch nichtNamen gegen Kennungen zu tauschen holt eine Datenbank nicht aus der DSGVO — Artikel 4 Nummer 5 und Erwägungsgrund 26 sagen das direkt. Wirklich synthetische Daten liegen ganz außerhalb der Verordnung. Diese eine Unterscheidung entscheidet, wie du eine Staging-Umgebung befüllst.RatgeberTurnierbäume: Freilose, Setzlisten und warum die Zahlen Zweierpotenzen sein müssenEin K.-o.-Baum halbiert sein Feld in jeder Runde, er schließt also nur auf einer Zweierpotenz. Die Zahl der Freilose, die Rundenzahl, die Setzreihenfolge und die Gesamtzahl der Partien folgen alle aus dieser einen Tatsache — und jede passt in eine Zeile.AnleitungEinen Namen auslosen, ohne dass jemand am Ergebnis zweifeltEine faire Auslosung braucht mehr als eine Zufallszahl: gleiche Wahrscheinlichkeit, keine verzerrte Methode und ein Ergebnis, das jemand anderes prüfen kann. So geht es.RatgeberMenschen in faire Gruppen teilen: zufällig und fair sind nicht dieselbe Anforderung23 Personen lassen sich nicht durch vier teilen, und eine gleichverteilte Aufteilung kann einer Gruppe sämtliche starken Spieler zuschanzen. Hier sind die Restarithmetik, die gemessenen Kosten reinen Zufalls und die Schichtungslösung.ErklärungPoker-Blattwahrscheinlichkeiten, hergeleitet statt auswendig gelerntJede Fünf-Karten-Wahrscheinlichkeit im Poker ist ein Abzählargument über 2 598 960 Blätter, und jedes passt in eine Zeile. Hier sind alle neun, mit der Probe, die sie beweist: Die Anzahlen müssen sich zu genau C(52,5) summieren.ErklärungMischen ist schwerer, als es aussieht: eine Million Durchläufe des Einzeiler-MischensDas Mischen, das alle schreiben — Sortieren mit einem Zufallsvergleicher — ist verzerrt, und zwar deutlich. Eine Million gemessener Durchläufe zeigt acht der vierundzwanzig Reihenfolgen doppelt so häufig wie die übrigen sechzehn.

Ähnliche Tools

Dieser Artikel handelt vom Testen eines Zahlungsformulars und von sonst nichts. Eine erzeugte Nummer ist kein Zahlungsmittel: Dahinter steht kein Konto, kein Herausgeber wird sie autorisieren, und der Versuch, damit Waren oder Leistungen zu erhalten, ist in jeder Rechtsordnung, in der diese Seite erscheint, Betrug. Echte Kartennummern sind regulierte Daten — der PCI-DSS-Standard regelt ihre Speicherung und Verarbeitung, und dein Vertrag mit deinem Zahlungsdienstleister sagt mehr dazu. Nichts hiervon ist Rechts-, Sicherheits- oder Compliance-Beratung: Nimm die veröffentlichten Testnummern deines Dienstleisters und frag ihn im Zweifel.

Quellen

Hast du einen Fehler in diesem Artikel entdeckt?