vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB617.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 OtterBewertung:  Views:  12.469 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 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:

  1. 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).
     
  2. Addiere all diese Zahlen zusammen. Beispiel: 1111 wird 2121, dann 2+1+2+1=6; 8763 wird 7733, dann 7+7+3+3=20.
     
  3. 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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.