MD5 Hash falsch oo"?

  • .NET (FX) 4.5–4.8
  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    MD5 Hash falsch oo"?

    Huhu liebe Community,
    ich bins mal wieder...

    Ich bin zurzeit dabei einen kleinen Updater zu schreiben und nun habe ich ein Problem.
    Ich habe eine "mdhash.dll" erstellt, welche von 2 Programmen importiert wird um den Hash Code einer Datei zu ermitteln.

    Der Lister, erstellt eine textdatei mit den Dateinamen und hashes von dateien aus einem Ordner.
    Diese wird dann vom Updater runtergeladen und ausgelesen. Mit einem Split werden Dateiname und Hash getrennt.
    Für jede Datei die sich dann local befindet, wird ebenfalls mit hilfe der "mdhash.dll" der hash code ermittelt damit man diesen zum Vergleich verwenden kann. Jetzt habe ich jedoch ein Problem.. Ich bekomme jeweils einen Unterschiedlichen Hash.

    Erstellte bsp. Zeile aus dem Lister: /CIM - Community Instand Messenger.exe;75E82DBF06DE8249A3EA96D8DDFCDCE3

    Ich hab einen Ordner aum Desktop : test
    da drin sind alle daten
    der Hasher erstellt also eine Liste mit allen files;hash und speichert sie
    ich lade diese Datei mit allen daten auf den server hoch
    Das gegenstück: der updater befindet sich im ordner hash(über eine blacklist ausgeschlossen von der Patchlist damit er sich nicht selber behindert beim laden)
    Dieser erstellt wie oben genannt nun von der Datei : CIM - Community Instand Messenger.exe den Hash: AF4765DF8EAF7DF6CC3AA233CEDA243E

    Datei ist genau die Selbe oO"

    code meiner MDHASH:

    Spoiler anzeigen

    Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.IO
    3. Imports System.Text
    4. Public Class Class1
    5. Dim encoder As New UTF8Encoding()
    6. Dim bytHashedData As Byte()
    7. Dim md5Hasher As New MD5CryptoServiceProvider
    8. Dim secndhash As String
    9. Function get_hash(ByVal hashfile As String)
    10. Dim xloop As Integer
    11. bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(hashfile))
    12. bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(hashfile & "ÿ]¤ò)ÇË}TòëfáÇdª@<ôت8ÆȶyÐOv1ô¬}ÃaÏÖJ§NB8c0@åKõÙb§è°}7Qeu¤A-ÕüÏl¯Æç\<ðk°2a¿!~l²í¾º[ú¶V]QéÁÎÔó<²äþ\o#D<óO#q¯ñi¯±/©¸Ãáq"))
    13. secndhash = (BitConverter.ToString(md5Hasher.Hash).Replace("-", ""))
    14. Do Until xloop = 50
    15. bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(secndhash))
    16. bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(secndhash & "ÿ]¤ò)ÇË}TòëfáÇdª@<ôت8ÆȶyÐOv1ô¬}ÃaÏÖJ§NB8c0@åKõÙb§è°}7Qeu¤A-ÕüÏl¯Æç\<ðk°2a¿!~l²í¾º[ú¶V]QéÁÎÔó<²äþ\o#D<óO#q¯ñi¯±/©¸Ãáq"))
    17. secndhash = secndhash & (BitConverter.ToString(md5Hasher.Hash).Replace("-", ""))
    18. bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(secndhash))
    19. bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(secndhash & "ÿ]¤ò)ÇË}TòëfáÇdª@<ôت8ÆȶyÐOv1ô¬}ÃaÏÖJ§NB8c0@åKõÙb§è°}7Qeu¤A-ÕüÏl¯Æç\<ðk°2a¿!~l²í¾º[ú¶V]QéÁÎÔó<²äþ\o#D<óO#q¯ñi¯±/©¸Ãáq"))
    20. secndhash = (BitConverter.ToString(md5Hasher.Hash).Replace("-", ""))
    21. xloop = xloop + 1
    22. Loop
    23. secndhash = (BitConverter.ToString(md5Hasher.Hash).Replace("-", ""))
    24. Return secndhash
    25. End Function
    26. End Class



    EDIT by LaMa5:
    Thema verschoben (Tipps&Tricks --> Internet/Netzwerkprogrammierung)

    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Du berechnest in Deinem gezeigten Codeausschnitt nicht an einer Stelle den Hash der Datei, sondern den Hash des an die Funktion übergebenen Strings. Was sollen all diese kryptischen Zeichen?

    Ein Beispiel, wie man den Hash einer Datei berechnen lassen kann:

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.IO
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. MessageBox.Show(GetFileHash(New FileInfo("test.txt")))
    6. End Sub
    7. Private Function GetFileHash(file As FileInfo) As String
    8. Using md5 As New MD5CryptoServiceProvider()
    9. Dim hash() As Byte = md5.ComputeHash(New FileStream(file.FullName, FileMode.Open))
    10. Return BitConverter.ToString(hash).Replace("-", "")
    11. End Using
    12. End Function
    13. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o