Zum Inhalt springen

Luhn-Algorithmus-Rechner - Kreditkarten & IMEI validieren

Kostenloser Luhn mod 10 Rechner zur Kreditkartenvalidierung, IMEI-Prüfung und ID-Verifizierung. Validieren Sie Nummern sofort online oder generieren Sie Testdaten.

Luhn-Algorithmus-Rechner

Aktion

Überprüfen Sie, ob Ihre Nummer die Luhn-Mod-10-Validierung besteht

Ladekalkulator...
📚

Dokumentation

Was ist der Luhn-Algorithmus?

Der Luhn-Algorithmus, auch als Modulo-10-Algorithmus bezeichnet, ist eine Formel, mit der geprüft wird, ob eine Ziffernfolge eine gültige Identifikationsnummer sein könnte. Er wird eingesetzt, um Tippfehler in Kreditkartennummern, IMEI-Nummern von Mobiltelefonen und anderen ID-Codes zu erkennen, bevor sie einen Fehler verursachen. Der IBM-Ingenieur Hans Peter Luhn beschrieb das Verfahren in einem im Jahr 1954 eingereichten Patent.

Der Algorithmus beweist nicht, dass eine Nummer echt oder aktiv ist. Er bestätigt lediglich, dass die Ziffern dem erwarteten Muster folgen. Eine Kartennummer kann die Luhn-Prüfung bestehen und trotzdem gefälscht, abgelaufen oder nicht gedeckt sein.

So wird eine Luhn-Prüfsumme berechnet

Die Prüfung erfolgt anhand der Ziffern einer Nummer, die von rechts nach links gelesen werden.

  1. Beginnend mit der zweitletzten Ziffer wird jede zweite Ziffer verdoppelt.
  2. Ergibt die Verdoppelung einer Ziffer eine Zahl größer als 9, wird 9 davon abgezogen. (Das entspricht der Addition der beiden Ziffern des Ergebnisses; aus 16 wird also 1 + 6 = 7 oder gleichwertig 16 − 9 = 7.)
  3. Alle Ziffern werden addiert: die verdoppelten (nach der Anpassung) und die unverändert gebliebenen.
  4. Ist die Gesamtsumme durch 10 teilbar, ist die Nummer gültig. Andernfalls ist sie ungültig.

Wenn ein Unternehmen neue ID-Nummern vergibt, verwendet es dieselben Schritte in umgekehrter Reihenfolge. Es nimmt alle Ziffern außer der letzten, führt die Prüfung durch und wählt anschließend die letzte „Prüfziffer“ so, dass die Gesamtsumme durch 10 teilbar ist.

Eine Kartennummer validieren

Nehmen Sie die Testnummer 4532015112830366.

  1. Ziffern von rechts nach links: 6, 6, 3, 0, 3, 8, 2, 1, 1, 5, 1, 0, 2, 3, 5, 4
  2. Jede zweite Ziffer verdoppeln: 6, 12, 3, 0, 3, 16, 2, 2, 1, 10, 1, 0, 2, 6, 5, 8
  3. Von jedem Ergebnis über 9 9 abziehen: 6, 3, 3, 0, 3, 7, 2, 2, 1, 1, 1, 0, 2, 6, 5, 8
  4. Addieren: 6+3+3+0+3+7+2+2+1+1+1+0+2+6+5+8 = 50
  5. 50 ist durch 10 teilbar, daher ist die Nummer gültig.

Eine ungültige Nummer

Nehmen Sie 490154203237517, eine 15-stellige Nummer im Format von IMEI-Nummern.

Die gleichen Schritte ergeben eine Summe von 59. Da 59 nicht durch 10 teilbar ist, ist diese Nummer ungültig.

Um sie in eine gültige Nummer umzuwandeln, muss nur die letzte Ziffer geändert werden. Das Prüfen jeder möglichen letzten Ziffer zeigt, dass eine letzte Ziffer von 8 die Summe auf 60 erhöht, das durch 10 teilbar ist. Somit ist 490154203237518 eine gültige Luhn-Nummer, während jede andere letzte Ziffer von 0 bis 9 (außer 8) eine ungültige Nummer ergibt.

Verwendung dieses Rechners

Der Rechner verfügt über zwei Modi, die mit den Aktionsschaltflächen ausgewählt werden.

Validieren prüft eine Nummer während der Eingabe. Ein Klick auf eine Schaltfläche ist nicht erforderlich. Das Ergebnis erscheint, sobald das Feld Ziffern enthält. Eine darunter angezeigte schrittweise Aufschlüsselung listet jede Ziffer, den Wert, den sie nach Verdoppelung und Anpassung beiträgt, sowie die Gesamtsumme auf.

Generieren erstellt eine Nummer, die die Prüfung besteht. Bereits im Feld vorhandene Ziffern bleiben als Anfang der neuen Nummer erhalten. Der Rechner füllt den Rest mit zufälligen Ziffern auf und hängt die Prüfziffer an. Das Ergebnis ist 16 Ziffern lang, also so lang wie eine typische Zahlungskartennummer, sofern die eingegebenen Ziffern nicht bereits 16 oder länger sind; in diesem Fall ist das Ergebnis eine Ziffer länger als die Eingabe.

Leerzeichen, Bindestriche und Punkte in der Eingabe werden ignoriert. Daher werden „4532 0151 1283 0366“ und „4532-0151-1283-0366“ genauso gelesen wie die Ziffern ohne Trennzeichen. Jedes andere Zeichen, etwa ein Buchstabe, wird mit einer Fehlermeldung abgewiesen.

Wo der Luhn-Algorithmus verwendet wird

  • Zahlungskarten. Visa, Mastercard, American Express und andere Netzwerke erstellen ihre Kartennummern so, dass die vollständige Nummer die Luhn-Prüfung besteht. Zahlungsformulare können damit eine falsch eingegebene Ziffer erkennen, bevor sie einen Zahlungsdienstleister kontaktieren.
  • IMEI-Nummern. Die 15-stellige Kennung von Mobiltelefonen und anderen Mobilfunkgeräten enthält eine Luhn-Prüfziffer.
  • Kanadische Sozialversicherungsnummern. Die 9-stellige SIN verwendet dieselbe Prüfung.
  • US-amerikanische National Provider Identifier (NPI). Gesundheitsdienstleister in den Vereinigten Staaten erhalten eine 10-stellige NPI, die mit einer Luhn-basierten Prüfung validiert wird.

Was der Luhn-Algorithmus nicht erkennt

Der Algorithmus erkennt immer eine einzelne falsch eingegebene Ziffer, unabhängig davon, um welche Ziffer es sich handelt oder an welcher Stelle sie steht. Er erkennt außerdem jeden Tausch benachbarter Ziffern (etwa die Eingabe von „39“ statt „93“), außer in einem bestimmten Fall: dem Tausch einer 0 und einer 9, die nebeneinander stehen, etwa wenn „09“ zu „90“ wird.

Außerdem erkennt er drei „Zwillingsfehler“ nicht, bei denen ein wiederholtes Ziffernpaar durch ein anderes wiederholtes Ziffernpaar ersetzt wird: 22 wird als 55 gelesen, 33 als 66 und 44 als 77. Da diese Lücken bekannt und begrenzt sind, eignet sich die Luhn-Prüfung zuverlässig zum Erkennen gewöhnlicher Tippfehler, gilt jedoch allein nicht als vollständiges Fehlererkennungssystem.

Luhn ist keine Sicherheitsprüfung

Luhn wurde entwickelt, um versehentliche Fehler bei der Dateneingabe zu erkennen, nicht um Betrug aufzudecken. Eine Nummer, die die Prüfung besteht, ist lediglich mathematisch korrekt aufgebaut. Die tatsächliche Zahlungssicherheit beruht auf weiteren Ebenen, die nach der Luhn-Prüfung hinzukommen, etwa dem CVV-Code der Karte, der Adressprüfung und der 3-D-Secure-Authentifizierung. Luhn ist einfach der erste und kostengünstigste Filter, der vor diesen langsameren Prüfungen ausgeführt wird.

Eine Nummer in JavaScript validieren

1function isValidLuhn(number) {
2  const digits = number.replace(/\D/g, '').split('').map(Number);
3  if (digits.length === 0) return false;
4
5  let sum = 0;
6  let doubleDigit = false;
7  for (let i = digits.length - 1; i >= 0; i--) {
8    let d = digits[i];
9    if (doubleDigit) {
10      d *= 2;
11      if (d > 9) d -= 9;
12    }
13    sum += d;
14    doubleDigit = !doubleDigit;
15  }
16  return sum % 10 === 0;
17}
18

Die Prüfung auf eine leere Eingabe ist wichtig: Eine leere Zeichenfolge hat eine Ziffernsumme von 0, und 0 ist durch 10 teilbar. Ohne diese Prüfung würde die Funktion daher eine leere Eingabe als gültige Nummer behandeln. Um eine Prüfziffer zu ermitteln, statt eine zu prüfen, wird dieselbe Schleife über die Ziffern vor der Prüfziffer ausgeführt, wobei die Verdoppelung bei der letzten dieser Ziffern beginnt. Anschließend wird (10 - sum % 10) % 10 verwendet.

Häufig gestellte Fragen

Wofür wird der Luhn-Algorithmus verwendet?

Er prüft, ob eine Identifikationsnummer, etwa eine Kreditkartennummer, eine IMEI-Nummer oder eine kanadische SIN, in sich schlüssig ist. Er erkennt falsch eingegebene oder vertauschte Ziffern, bevor sie einen Verarbeitungsfehler verursachen.

Wie genau erkennt der Luhn-Algorithmus Fehler?

Er erkennt jede einzelne falsch eingegebene Ziffer und nahezu jeden Fall vertauschter benachbarter Ziffern. Der einzige Tausch, den er nicht erkennt, betrifft eine 0 und eine 9, die nebeneinander stehen. Außerdem erkennt er drei bestimmte „Zwillingsfehler“ nicht: 22 statt 55, 33 statt 66 und 44 statt 77.

Bedeutet eine gültige Luhn-Nummer, dass die Karte echt ist?

Nein. Die Prüfung bestätigt lediglich, dass die Ziffern dem erwarteten Muster entsprechen. Sie sagt nichts darüber aus, ob die Karte existiert, aktiv ist oder über Guthaben verfügt. Unternehmen führen dafür zusätzliche Prüfungen durch, etwa anhand eines CVV-Codes.

Kann die Luhn-Prüfung ohne Computer durchgeführt werden?

Ja. Sie erfordert nur Verdoppelung, Subtraktion und Addition und kann daher von Hand oder mit einem einfachen Taschenrechner durchgeführt werden. Das gehörte zum ursprünglichen Konzept, das für die Zeit der Lochkarten entwickelt wurde, bevor digitale Computer weit verbreitet waren.

Sind die generierten Nummern echte Kartennummern?

Nein. Der Generator erzeugt lediglich Ziffernfolgen, die die Luhn-Prüfung bestehen. Sie sind zum Testen von Eingabeformularen gedacht. Keine Bank hat sie ausgegeben, und sie können nicht zum Bezahlen verwendet werden.

Warum wird er als Modulo-10-Algorithmus bezeichnet?

Weil im letzten Schritt geprüft wird, ob die Summe ohne Rest durch 10 teilbar ist, was in der Mathematik als „sum mod 10 = 0“ geschrieben wird. „Mod“ ist die Kurzform von modulo, dem nach einer Division verbleibenden Rest.

Wer hat den Luhn-Algorithmus erfunden?

Hans Peter Luhn, ein Ingenieur bei IBM, beschrieb ihn in einer im Jahr 1954 eingereichten Patentanmeldung (erteilt im Jahr 1960 als US-Patent 2.950.048). Er ist außerdem für frühe Arbeiten zur computergestützten Textindexierung bekannt.