vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v2.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Variablen/Strings   |   VB-Versionen: VB.NET24.08.05
Secure LoginBox

Eine "sichere" Login-Box mittels MD5-Hash

Autor:   JoykiBewertung:     [ Jetzt bewerten ]Views:  11.958 
www.joyki.deSystem:  WinNT, Win2k, Win8 Beispielprojekt auf CD 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    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.
     

    Dieser Tipp wurde bereits 11.958 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-2015 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