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

https://www.vbarchiv.net
Rubrik: Variablen/Strings   |   VB-Versionen: VB.NET24.08.05
Secure LoginBox

Eine "sichere" Login-Box mittels MD5-Hash

Autor:   JoykiBewertung:  Views:  16.224 
www.joyki.deSystem:  WinNT, Win2k, Win8, Win10, Win11 Beispielprojekt auf CD 

Für manche Programme nutze ich eine Login-Box um den Zugriff zu schützen.

Leider ist es möglich, mittels HEX-Editoren oder Disassemblern diese Variablen auszulesen. Um das ganze sicherer zu machen habe ich folgende Programme geschreiben (als Anhang verfügbar):

  1. Make MD5 Password
  2. Secure MD5 Login-Box

Hier der Quellcode zu (1):
(die Textfelder & Buttons werden nicht expl. aufgelistet)

ImportS System.Text
ImportS System.Security.Cryptography
 
Private Sub btnCalc_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles btnCalc.Click
 
  ' Berechnung
  Try
    Dim md5Ausgabe As String
    Dim md5Eingabe As String
 
    md5Eingabe = txtEingabe.Text
    md5Ausgabe = GenerateHashDigest(md5Eingabe)
    Me.txtAusgabe.Text = md5Ausgabe
 
    ' Fehlermeldung
  Catch ex As Exception
    MsgBox("Error 0x02   " + ex.Message)
  End Try
End Sub
Function GenerateHashDigest(ByVal strEingabe As String) As String
  Dim hash As Byte()
  Dim uEncode As New UnicodeEncoding
  Dim bytProducts() As Byte = uEncode.GetBytes(strEingabe) ' von String nach Byte
  Dim md5 As New MD5CryptoServiceProvider
 
  hash = md5.ComputeHash(bytProducts) ' MD5-Hash-Bytes erstellen
  Return Convert.ToBase64String(hash) ' von Byte nach ASCII
End Function

Dieses kann genutzt werden um Benutzername oder Passwort in einen MD5-Hash umzuwandeln.

Nachfolgend der Quellcode zu (2):
(die Textfelder & Buttons werden nicht expl. aufgelistet)

Import System.Text
Import System.Security.Cryptography
 
Private Sub btnLogin_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles btnLogin.Click
 
  Dim passHashOriginal As String = "123456789" ' HIER DAS MD5-PASSWORD EINGEBEN !!!'
 
  ' erweiterung (1) Der Username wird verschlüsselt als MD5-Übergeben!
  Dim usrHashOriginal As String = " USERNAME" ' HIER DEN MD5-USER EINGEBEN !!!'
 
  Dim passHashForCompare As String = GenerateHashDigest(txtPass.Text)
  Dim usrHashForCompare As String = GenerateHashDigest(txtUser.Text)
 
  ' Prüfe
  If usrHashOriginal <> usrHashForCompare Then ' User-Name prüfen
    MsgBox("Überprüfung NEGATIV !", MsgBoxStyle.Critical, "WARNUNG !!!")
    Exit Sub
  Else
    If passHashOriginal <> passHashForCompare Then ' Passwort prüfen
      MsgBox("Überprüfung NEGATIV !", MsgBoxStyle.Critical, "WARNUNG !!!")
      Exit Sub
    Else
      MsgBox("Überprüfung POSITIV !", MsgBoxStyle.Information, "Erfolgreich !")
      ' HIER DER NÄCHSTE SCHRITT ZUM ERFOLGREICHEM LOGIN (stare MainIntern o.ä.)
    End If
  End If
End Sub
Function GenerateHashDigest(ByVal strEingabe As String) As String ' Siehe oben!
  Dim hash As Byte()
  Dim uEncode As New UnicodeEncoding
  Dim bytProducts() As Byte = uEncode.GetBytes(strEingabe) ' von String nach Byte
  Dim md5 As New MD5CryptoServiceProvider
 
  hash = md5.ComputeHash(bytProducts) ' MD5-Hash-Bytes erstellen
  Return Convert.ToBase64String(hash) ' von Byte nach ASCII
End Function

FUNKTIONSWEISE:
Das Problem bei Login's war, dass zum größten Teil das gespeicherte Passwort und/oder der Username im Programmcode (HEX-Editor) oder mit Dissassemblern (IDA)auszulesen war. Die (meiner Meinung nach) bessere Möglichkeit besteht darin das von dem Passwort und/oder dem Username ein sog. MD5-Hash erstellt wird. Dieser MD5-Hash kann dann ohne Bedenken in den Code eingebaut werden, da es sehr schwer ist, anhand von dem MD5-Hash auf den Username oder das Passwort zu kommen.
 



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-2024 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.