Montag, 27. Juni 2011

MD5-Hash einer Datei erstellen

Wenn man mit Dateien arbeitet speziell im Bereich Download/Upload, muss man immer wieder Dateien auf Vollständigkeit prüfen. Dieses kann man am besten über einen MD5-Hash machen.
Erstellt man einen MD5-Hash der Ursprungsdatei kann man diesen mit dem der neu erstellten Datei vergleichen um zu prüfen, ob die Dateien übereinstimmen. Ist das nicht der Fall, so ist beim Download/Upload etwas schief gelaufen.

Einen MD5-Hash kann man ganz einfach wie folgt erstellen.

// Gibt einen MD5-Hash-String für eine Datei zurück
public static string GetMd5HashString(string filePath)
{
     // Datei in neues FileStream-Objekt einlesen
     FileStream fileStream = new FileStream(filePath, FileMode.Open);

     // Neues Objekt für MD5-Kryptographi-Provider erstellen
     MD5 md5 = new MD5CryptoServiceProvider();

     // ByteArray mit MD5-Hash der eingelesenen Datei erstellen
     byte[] fileHash = md5.ComputeHash(fileStream);

     // FileStream mit eingelesener Datei wieder schließen
     fileStream.Close();

     // StringBuilder-Objekt erstellen um anschließend den MD5-Hash als String zu speichern
     StringBuilder sb = new StringBuilder();

     // MD5-Hash (ByteArray) byteweise verarbeiten und an StringBuilder anhängen
     for (int i = 0; i < fileHash.Length; i++)
     {
          sb.Append(fileHash[i].ToString("x2"));
     }

     // MD5-Hash als String ausgeben
     return sb.ToString();
}

Keine Kommentare:

Kommentar veröffentlichen