Passwort überprüfen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von AliveDevil.

    Passwort überprüfen

    Hiho

    Nehmen wir mal an, beim Start meines Programmes müsste man ein Passwort eingeben, welches in den My.settings gespeichert wird.
    Beim 2ten Start wird das Passwort dann verlang und bei einer Falschangabe schliesst sich das Programm wieder.

    Ich dachte es mir so:
    Erste Eingabe --> MD5 Hash davon in My.settings speichern
    Zweiter Start --> Eingegebenes Passwort mit MD5 Hashen und dann mit dem Hash in den My.settings vergleichen.

    Kann ich das so machen?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    AliveDevil schrieb:

    nur vllt. nimmste keine My.Settings...sondern irwas von eigener Speichermethode...am besten:
    MD5 Hash -> GZIP -> Base64 ..das knackt dann keiner mehr


    Klar, man kann die My.settings löschen, was es nicht umbedingt sicher macht.

    Für den MD5 hash habe ich folgendes im Forum gefunden:
    [VB.NET] MD5 Hash aus einem String
    Ich denke damit komme ich weit.

    Was ich aber mit den Begriffen GZIP und Base64 anfangen soll, weiss ich nicht.

    Laut google willst du den MD5 hash "verpacken" und dann nochmals mit Base64 verschlüsseln und überprüfen?

    Für Base64 habe ich folgendes gefunden: nonhostile.com/page-vb-net-base64-encoding-decoding.asp
    Das scheint mir sehr einfach zu sein.

    Jedoch GZIP --> msdn.microsoft.com/de-de/libra…mpression.gzipstream.aspx
    Da blick ich gar nicht mehr durch.

    Habt ihr ein schönes Beispiel für eine "Gzip-ung" (LOL) ?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    xDDD .. you don't have to understand my programming style^^

    ja...base64 is einfach Oo
    den Code für MD5 kannste benutzen aus dem Thread..und hier ma mein Code, um eine Datei zu komprimieren:
    cl_save.vb

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Security.Cryptography
    3. Imports System.Text
    4. Imports System
    5. Imports System.IO.Compression
    6. Public Class cl_Save
    7. Public Shared compressed_bytes As String
    8. Public Shared decompressed_bytes() As Byte
    9. Public Shared Function Compress(ByVal value() As Byte) As String
    10. Dim buffer() As Byte = value
    11. Dim memoryStream = New MemoryStream()
    12. Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
    13. gZipStream.Write(buffer, 0, buffer.Length)
    14. End Using
    15. memoryStream.Position = 0
    16. Dim compressedData = New Byte(memoryStream.Length - 1) {}
    17. memoryStream.Read(compressedData, 0, compressedData.Length)
    18. Dim gZipBuffer = New Byte(compressedData.Length + 4 - 1) {}
    19. System.Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length)
    20. System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4)
    21. Return Convert.ToBase64String(gZipBuffer)
    22. End Function
    23. Public Shared Function DecompressString(ByVal compressedText As String) As Byte()
    24. Dim gZipBuffer() As Byte = Convert.FromBase64String(compressedText)
    25. Using memoryStream = New MemoryStream()
    26. Dim dataLength As Integer = BitConverter.ToInt32(gZipBuffer, 0)
    27. memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4)
    28. Dim buffer = New Byte(dataLength - 1) {}
    29. memoryStream.Position = 0
    30. Using gZipStream = New GZipStream(memoryStream, CompressionMode.Decompress)
    31. gZipStream.Read(buffer, 0, buffer.Length)
    32. End Using
    33. Return buffer
    34. End Using
    35. End Function
    36. End Class


    Da is dann auch schon Base64 Konvertierung eingeschlossen...also was du machen musst:

    VB.NET-Quellcode

    1. Dim pwd As String
    2. pwd = txt_passwd.Text
    3. pwd = MD5(pwd)
    4. pwd = Compress(System.Text.Encoding.Default.GetBytes(pwd))
    5. IO.File.WriteAllText(pwd)

    und wenn du es zurück machen willst:

    VB.NET-Quellcode

    1. pwd = txt_passwd.Text
    2. pwd = MD5(pwd)
    3. If pwd = System.Text.Encoding.Default.GetString(Decompress(IO.ReadAllText(password)) Then
    Man kann doch einfach den Benutzernamen mit dem Passwort verschlüsseln, und in My.Settings speichern. So hat man das Passwort nich im Programm gespeichert, und das is sehr sicher. Wenn man das Passwort im Programm gespeichert hat -> Bruteforce Angriff.
    base64 ist sicher kein verschlüsselungsalgorithmus. Das kannst du ganz einfach mit der funktion ohne codes usw zurück convertieren

    EDIT: yay mein 400. post XD


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.