MD5 zu String und umgekehrt!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    MD5 zu String und umgekehrt!

    Moin!
    Wie kann ich einen MD5 Hash in ein String zurück setzen.
    Habe bereits gegoogelt ohne erfolg!
    by

    VB.NET-Quellcode

    1. Imports System.Text
    2. Imports System.Security.Cryptography
    3. Public Class Form1
    4. Public Function GetMD5FromString(ByVal sText As String) As String
    5. ' MD5-Hash eines Strings ermitteln
    6. ' Der String-Inhalt muss hierbei als Byte-Array
    7. ' übergeben werden. Hierzu verweden wir einfach
    8. ' System.Text.Encoding-Klasse
    9. Dim MD5 As New MD5CryptoServiceProvider
    10. MD5.ComputeHash(System.Text.Encoding.Default.GetBytes(sText))
    11. ' als Ergebnis erhalten wir wieder ein Byte-Array,
    12. ' das mittels der BitConverter-Klasse zurück in
    13. ' einen String konvertiert wird.
    14. Return BitConverter.ToString(MD5.Hash)
    15. End Function
    16. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    17. ' "47-6A-55-33-99-8C-2B-31-C8-1C-2D-56-A2-5B-83-A7"
    18. Me.Text = GetMD5FromString("HalloWelt")
    19. ' MD5 in String umwandeln...?
    20. End Sub
    21. End Class
    Visual Basic.NET 8o
    MS-SQL
    8o
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @An alle
    Vielen Dank, für eure schnelle Antwort!
    Ich habe nun eine ähniche Lösung gefunden!
    Hier für euch alle:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Function Encode(str As String) As String
    3. Return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(str))
    4. End Function
    5. Public Function Decode(str As String) As String
    6. Return System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(str))
    7. End Function
    8. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    9. Dim s As String = "HalloWelt!"
    10. Me.Label2.Text = Encode(s) ' verschlüßeln...
    11. Me.Label1.Text = Decode(Me.Label2.Text) ' entschlüßeln
    12. End Sub
    13. End Class
    Visual Basic.NET 8o
    MS-SQL
    8o
    hmm Base64 ist kein Md5 Hash, das sollte dir klar sein :)
    und Base64 ist auch keine Verschlüsslung :)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Hi
    bitte unbedingt die Suchfunktion benutzen. Es kann nicht sein, dass ein Thema innerhalb weniger Tage mehrmals gefragt wird. Und wie immer: Hashes sind Einwegfunktionen. Außerdem: Stell dir vor, ein String hat die Länge 100 Buchstaben (entspricht im Normalfall in der Codierung Unicode 200 Bytes). Stell dir nun vor, du erhältst nach Anwendung einer Funktion eine Ausgabe von z.B. 16 Bytes. Wenn es nicht um Kompression geht (auch da wird's nicht unbedingt möglich sein), wie hast du vor, alle 200 Bytes in 16 zu verpacken und trotzdem noch unterscheiden zu können? Verhält sich analog zu folgendem Modell: Du hast 17 Kugeln und 16 Urnen und möchtest in jede Urne nicht mehr als eine Urne legen, aber alle Kugeln verteilen. Das wird nicht funktionieren. Analog verhält es sich zum Md5. Du kannst nicht 200 Bytes, in denen völlig voneinander verschiedene Daten gespeichert werden sollen (du hast für jede Stelle 255 mögliche Werte, wenn man's genau nimmt, wegen Unicode weniger, aber selbst, wenn man 255^100 nimmt, kommt eine immens große Zahl an möglichen Eingaben raus und es sind mehr als 255^100 mögliche Eingaben) auf 16 Bytes reduzieren oder wieviel Md5 auch immer verwendet. Es wird immer Kollisionen geben, d.h. verschiedene Eingaben führen zu einem gleichen Ergebnis.

    Allerdings aufpassen: Je nachdem, was du bezweckst ist Base64 unangebracht. Wenn es dir um Sicherheit geht, ist es völlig fehl am Platz.

    Gruß
    ~blaze~