2017-02-07 3 views
2

Ich habe eine Frage zum Luhn-Algorithmus. Der Luhn-Algorithmus (Mod 10) zur Fehlererkennung und Prüfsummenziffern. Beispielsweise Ziffern wie Visa, Kreditkarte etc.Warum Luhn Algorithmus mit 2 multiplizieren?

Zum Beispiel haben wir Ziffern: Digits 1 2 3 4 5 6 7 8 9 3

Schritt 1: Den Wert der alternierenden Ziffern multiplizieren mit 2, beginnend von der zweiten Ziffer ganz rechts. Beispiel: Digit 1 2 3 4 5 6 7 8 9 3 Multiplier X2 X2 X2 X2 X2

Schritt 2: In all einzelnen Stellen der oben genannten Produkte zusammen mit dem nicht verdoppelten Ziffern vom Original. Wenn mehr 10, so addieren oder subtrahieren Sie mit 9. Nummer.

Beispiel:

Digit  1 2 3 4 5 6 7 8 9 3 
Multiplier X2 X2 X2 X2 X2 
Result  2 2 6 4 10 6 14 8 18 3 
         1+0 1+4 1+8 
Sum   2+ 2+ 6+ 4+ 1+ 6+ 5+ 8+ 9+ 3 = 40 

Schritt 3: Wenn die gesamte Modulo 10 gleich 0 ist, dann ist die Zahl gültig gemäß der Formel LUHN; ansonsten ist es ungültig. Beispiel. 40 Mod 10 = 0 so gültig, wenn nicht 0, also nicht gültig.

Die Frage ist, warum in Schritt 2 Multiplizieren mit 2? aus welchem ​​Grund? (mit Link Verweis oder Papiere bitte). danke

Antwort

3

Obwohl keine explizite Begründung für dieses Detail in der Wikipedia article angegeben ist, wird die Multiplikation jeder zweiten Ziffer wahrscheinlich Erkennung von Tippfehlern implementieren, in denen benachbarte Orte ausgetauscht werden. Genauer gesagt wird erwähnt, dass

Der Luhn-Algorithmus wird fast [...] alle Transpositionen benachbarter Ziffern erkennen. Die Transponierung der zweistelligen Folge 09 bis 90 (oder umgekehrt) wird jedoch nicht erkannt.

Wenn benachbarte Orte permutiert werden, ist die Prüfsumme wahrscheinlich zu ändern. Ohne die verschiedenen Faktoren (2 für gerade Positionen von rechts, 1 für ungerade Positionen) wäre dies nicht der Fall.

Verwandte Themen