vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB2005, VB200821.01.10
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:     [ Jetzt bewerten ]Views:  11.145 
www.tools4vb.deSystem:  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).

''' <summary>
''' Luhn-Algorithmus zum Prüfen von Identifikationsnummern
''' </summary>
''' <param name="Number">Identifikationsnummer, die geprüft werden soll</param>
''' <returns>True, wenn es sich um eine gültige Nummer handelt, andernfalls False</returns>
Public Function CheckLuhn(ByVal Number As String) As Boolean
  Dim Result As Boolean = False
 
  ' Leerzeichen entfernen
  Number = Number.Replace(" ", "")
  If Number.Length > 0 Then
    Dim Digits As Integer = Number.Length
    Dim parity As Integer = Digits Mod 2
    Dim sum As Integer = 0
 
    For i As Integer = 0 To Digits - 1
      Dim digit As Integer = Val(Number.Substring(i, 1))
      If i Mod 2 = parity Then digit *= 2
      If digit > 9 Then digit -= 9
      sum += digit
    Next
    Result = ((sum Mod 10) = 0)
  End If
 
  Return Result
End Function

Dieser Tipp wurde bereits 11.145 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel