Обработка файлов MD5 - PullRequest
       35

Обработка файлов MD5

1 голос
/ 28 августа 2009

Доброе утро всем,

Я работаю над инструментом проверки целостности файлов MD5 в C #.

Сколько нужно времени, чтобы файлу было присвоено значение контрольной суммы MD5? Например, если я пытаюсь получить файл .mpg размером 2 ГБ, каждый раз это занимает около 5 минут. Это кажется слишком длинным.

Я просто нетерпение?

Ниже код, который я использую

public string getHash(String @fileLocation)
    {
        FileStream fs = new FileStream(@fileLocation, FileMode.Open);

        HashAlgorithm alg = new HMACMD5();
        byte[] hashValue = alg.ComputeHash(fs);

        string md5Result = "";

        foreach (byte x in hashValue)
        {
            md5Result += x;
        }           

        fs.Close();           

        return md5Result;           
    }

Любые предложения будут оценены.

Привет

1 Ответ

7 голосов
/ 28 августа 2009

См. в этом о том, как наиболее эффективно вычислить хэш-значение файла. Вы в основном должны обернуть FileStream в BufferedStream, а затем передать это в HMACMD5.ComputeHash(Stream) перегрузку:

HashAlgorithm hmacMd5 = new HMACMD5();
byte[] hash;

using(Stream fileStream = new FileStream(fileLocation, FileMode.Open))
    using(Stream bufferedStream = new BufferedStream(fileStream, 1200000))
        hash = hmacMd5.ComputeHash(bufferedStream);
...