Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB6 | 17.11.08 |
Luhn-Algorithmus zum Prüfen von Identifikationsnummern Umsetzung der Luhn-Formel zum Prüfen von Identifikationsnummern, wie bspw. Kreditkartennummern oder 16-stellige HappyDigits-Nummern. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.898 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Der Luhn-Algorithmus, auch bekannt als "mod 10"-Algorithmus dient zur einfachen Prüfung von Identifikationsnummern, wie bspw. Kreditkartennummern oder auch 16-stellige HappyDigits-Nummern.
Es handelt sich hierbei um ein einfaches Prüfverfahren, um die syntaktische Korrektheit der Identifikationsnummer zu bestätigen. Es kann somit im Vorfeld eine gültige Nummer von einer zufälligen Nummer unterschieden werden.
Der Luhn-Algorithmus
Die Berechnung nach der Luhn-Methode erfolgt so:
- Beginnend mit der zweitletzten Ziffer und nach links durchlaufend, verdopple den Wert jeder zweiten Ziffer. Für jede Ziffer aus welcher 10 oder mehr wird, bilde die Quersumme . Zum Beispiel wird 1111 zu 2121 und 8763 wird zu 7733 (von (1+6)7(1+2)3).
- Addiere all diese Zahlen zusammen. Beispiel: 1111 wird 2121, dann 2+1+2+1=6; 8763 wird 7733, dann 7+7+3+3=20.
- Wenn die letzte Ziffer der Gesamtsumme 0 ist (anders gesagt: Wenn Gesamtsumme modulo 10 gleich 0 ist), dann ist die Nummer nach dem Luhn-Algorithmus gültig, sonst nicht. Also ist 1111 nicht gültig (siehe oben, die letzte Ziffer der Gesamtsumme ist 6), 8763 aber schon (siehe oben, die letzte Ziffer von 20 ist 0).
' Luhn-Algorithmus Public Function CheckLuhn(ByVal sNumber As String) As Boolean Dim sum As Long Dim nDigits As Long Dim parity As Long Dim i As Long Dim digit As Long nDigits = Len(sNumber) parity = nDigits Mod 2 For i = 0 To nDigits - 1 digit = Val(Mid$(sNumber, i + 1, 1)) If i Mod 2 = parity Then digit = digit * 2 If digit > 9 Then digit = digit - 9 sum = sum + digit Next i CheckLuhn = ((sum Mod 10) = 0) End Function