Sprache: VB
Den MD5 Hash einer Datei ermitteln
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Public Function MD5FileHash(ByVal sFile As String) As String
Dim MD5 As New MD5CryptoServiceProvider
Dim Hash As Byte()
Dim Result As String = ""
Dim Tmp As String = ""
Dim FN As New FileStream(sFile, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
MD5.ComputeHash(FN)
FN.Close()
Hash = MD5.Hash
For i As Integer = 0 To Hash.Length - 1
Tmp = Hex(Hash(i))
If Len(Tmp) = 1 Then Tmp = "0" & Tmp
Result += Tmp
Next
Return Result
End Function
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Public Function MD5FileHash(ByVal sFile As String) As String
Dim MD5 As New MD5CryptoServiceProvider
Dim Hash As Byte()
Dim Result As String = ""
Dim Tmp As String = ""
Dim FN As New FileStream(sFile, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
MD5.ComputeHash(FN)
FN.Close()
Hash = MD5.Hash
For i As Integer = 0 To Hash.Length - 1
Tmp = Hex(Hash(i))
If Len(Tmp) = 1 Then Tmp = "0" & Tmp
Result += Tmp
Next
Return Result
End Function
Alte URL:
/snippet/den-md5-hash-einer-datei-ermitteln/77
Wenn man die For/Next-Schleife mit dieser Zeile ersetzt, ist der Code nochmal bisschen kürzer 😉
[code]Result = Strings.Replace(BitConverter.ToString(Hash), „-„, „“)[/code]
Super das ist natürlich viel besser. Danke für den Tipp!
Hi
ich habe eine andere Methode gefunden, die allerdings einen ganz anderen Hashwert liefert, dafür aber VIEL SCHNELLER IST!
Ich habe aber leider KEINE AHNUNG von der Mathematik, die dahinter steht…
Wäre schön, wenn das mal jemand mit mehr Ahnung als ich unter die Lupe nimmt
Folgende Zeitmessungen habe ich bei einer 1.1 GB großen Datei gemacht
(jeweils Min und Maxwert):
activevb:
„55243ECF175013CFE9890023F9FD9037“
ElapsedTicks = 188235
ElapsedTicks = 349
Tim Hartwig:
„FAE29D6C14FA1A3E405AEFCC96959040“
ElapsedTicks = 136619208
ElapsedTicks = 40328337
http://www.activevb.de/rubriken/faq/faq0137.html
[code]
Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(„Hallo Welt!“)
Dim md5 As New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim result As Byte() = md5.ComputeHash(data)
Dim ret As String
ret = Strings.Replace(BitConverter.ToString(result), „-„, „“)
[/code]
Hat sich erledigt….
Ich hab nen fehler gemacht und einmal ZUVIEL auf Rückgängig geklickt….
[code]
System.Text.Encoding.UTF8.GetBytes(„Hallo Welt!“)
[/code]
klar geht das schnell… sry für die überflüssigen Posts