Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hash-Wert einer Datei

Forumthread: Hash-Wert einer Datei

Hash-Wert einer Datei
11.12.2019 09:28:36
Sven
Moin Leute,
kennt Ihr eine Möglichkeit, eine Art Hash-Wert einer Datei zu ermitteln?
Hintergrund: Ich habe ein Makro, welches eine Access-Datei kopiert und als Backup weglegt. In diesem Vorgang würde ich gerne einen Wert ermitteln, durch den ich beim späteren Einspielen des Backups sichergehen kann, dass es sich um die richtige Datei handelt.
Eine Alternative wäre vielleicht, einen Wert in die Eigenschaften der wegzulegende Access-Datei zu schreiben und diesen beim Wiederverwenden zu prüfen...
Danke und Grüße
Sven
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: z.B. PS
11.12.2019 09:34:27
Fennek
Hallo,
es dürfte viele tools geben, eine recht einfach zu handhaben ist

PS C:\Users\xxxx> get-filehash C:\Temp\crypto.txt
Algorithm       Hash                                                                   Path      _
---------       ----                                                                   ----      _
SHA256          28D947E36CC7929CD85201A6194456E5308AB71CABA6910793B370C075938AB5       C:\Temp\ _
crypto.txt
also Powershell.
mfg
Anzeige
AW: z.B. PS
11.12.2019 09:54:42
Sven
Hallo Fennek,
wie kann ich das aus VBA heraus aufrufen?
AW: VBA oder PS
11.12.2019 10:42:16
Fennek
Hallo,
am einfachsten ist die Powershell-Console zu öffnen (Win10: rechts-klick auf Win-Symbol) und dort den Befehl eintippen und das Ergebnis mit copy/paste übertragen.
Oder den Code in eine *.ps1 Datei speichern und in VBA mit "Shell" aufrufen.
Oder diesen VBA-Code versuchen:

'https://stackoverflow.com/questions/36328530/how-to-generate-md5-hashes-for-large-files-with- _
vba
Public Function ComputeMD5(byval filepath As String) As String
Dim svc As Object, md5$, offset&, length&, i&, hFile
Dim hash() As Byte, block(0 To 31743) As Byte
' open the file
hFile = FreeFile
Open filepath For Binary Access Read As hFile Len = 31744
length = LOF(hFile)
' create the service
Set svc = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
' compute each block
For i = 1 To length \ 31744
Get hFile, offset + 1, block
offset = offset + svc.TransformBlock(block, 0, 31744, block, 0)
Next
' compute the final block
If length - offset Then Get hFile, offset + 1, block
svc.TransformFinalBlock block, 0, length - offset
hash = svc.hash
' free the file and the service
svc.Clear
Close hFile
' convert to an hexa string
md5 = String(32, "0")
For i = 0 To 15
Mid$(md5, i * 2 + (hash(i) > 15) + 2) = Hex(hash(i))
Next
' return the md5
ComputeMD5 = UCase(md5)
End Function
mfg
Anzeige
AW: VBA oder PS
11.12.2019 11:24:01
Sven
Super, der Code funktionier 1a!
Das der MD5-String stimmt, muss ich (mangels Konsole) einfach mal so glauben. Er verändert sich zumindest, wenn ich die Datei bearbeite.
Danke!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Hash-Wert einer Datei in Excel ermitteln


Schritt-für-Schritt-Anleitung

Um den Hash-Wert einer Datei, wie zum Beispiel den MD5-Hash oder SHA256-Hash, in Excel zu berechnen, kannst du eine benutzerdefinierte VBA-Funktion verwenden. Hier sind die Schritte:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".

  3. VBA-Code einfügen: Kopiere den folgenden Code in das Modul:

    ' MD5 Hash Function in VBA
    Public Function ComputeMD5(ByVal filepath As String) As String
       Dim svc As Object, md5$, offset&, length&, i&, hFile
       Dim hash() As Byte, block(0 To 31743) As Byte
       hFile = FreeFile
       Open filepath For Binary Access Read As hFile Len = 31744
       length = LOF(hFile)
       Set svc = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
       For i = 1 To length \ 31744
           Get hFile, offset + 1, block
           offset = offset + svc.TransformBlock(block, 0, 31744, block, 0)
       Next
       If length - offset Then Get hFile, offset + 1, block
       svc.TransformFinalBlock block, 0, length - offset
       hash = svc.Hash
       svc.Clear
       Close hFile
       md5 = String(32, "0")
       For i = 0 To 15
           Mid$(md5, i * 2 + (hash(i) > 15) + 2) = Hex(hash(i))
       Next
       ComputeMD5 = UCase(md5)
    End Function
  4. Funktion verwenden: Du kannst die Funktion nun in einer Zelle verwenden, um den MD5-Hash einer Datei zu berechnen. Zum Beispiel:

    =ComputeMD5("C:\Pfad\zu\deiner\Datei.txt")

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist und dass die Datei existiert.
  • Fehler: "Zugriff verweigert"

    • Lösung: Überprüfe die Berechtigungen für die Datei und stelle sicher, dass Excel über die notwendigen Zugriffsrechte verfügt.

Alternative Methoden

Neben der Verwendung von VBA gibt es auch alternative Methoden, um Hash-Werte zu ermitteln:

  1. PowerShell verwenden:

    • Du kannst den Hash einer Datei direkt in PowerShell berechnen. Zum Beispiel:
      Get-FileHash C:\Temp\crypto.txt -Algorithm SHA256
  2. Online-Tools: Es gibt verschiedene Websites, auf denen du Dateien hochladen und den Hash-Wert online berechnen lassen kannst.


Praktische Beispiele

  • Beispiel 1: Berechnung des MD5-Hashwerts einer Textdatei

    Sub BeispielMD5()
      Dim hashWert As String
      hashWert = ComputeMD5("C:\Temp\deineDatei.txt")
      MsgBox "Der MD5-Hashwert ist: " & hashWert
    End Sub
  • Beispiel 2: Berechnung des SHA256-Hashwerts (benötigt eine andere Funktion)

    ' Füge eine SHA256-Funktion ähnlich der MD5-Funktion hinzu

Tipps für Profis

  • Batch-Verarbeitung: Du kannst die Hash-Werte mehrerer Dateien in einer Schleife berechnen, um Zeit zu sparen.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung in deinem VBA-Code, um Probleme beim Hashen von Dateien zu identifizieren.

  • Leistung optimieren: Bei großen Dateien kann die Berechnung der Hash-Werte zeitaufwendig sein. Überlege, ob du Multithreading oder andere Optimierungstechniken verwenden kannst.


FAQ: Häufige Fragen

1. Wie kann ich den SHA256-Hashwert in Excel berechnen? Um den SHA256-Hashwert zu berechnen, kannst du eine ähnliche VBA-Funktion wie die MD5-Funktion erstellen, die den SHA256-Algorithmus verwendet.

2. Kann ich Hash-Werte in Excel ohne VBA berechnen? Ja, du kannst Online-Tools oder PowerShell verwenden, um Hash-Werte zu berechnen, die dann in Excel importiert werden können. Excel selbst bietet keine eingebaute Hash-Funktion.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige