Подходят ли MD5, SHA-256, SHA-512 для вычисления значений хеш-функции больших файлов? - PullRequest
0 голосов
/ 05 июля 2018

Вот функция, которая должна вычислять значения хеш-функции для файлов. Но время от времени я всегда получаю неправильные хэш-коды.

string filePath = @"G:\TV\movie.ts"; // about 10 GByte
private void Test()
{

  for (int i = 0; i < 99; i++)
  {
    byte[] bytes;
    try
    {
      var SHA256 = System.Security.Cryptography.SHA256.Create();
      var MD5 = System.Security.Cryptography.MD5.Create();
      var SHA512 = System.Security.Cryptography.SHA512.Create();
      using (var stream = File.OpenRead(filePath))
      {
        stream.Position = 0;
        bytes = MD5.ComputeHash(stream);
        Debug.Print(i + ": " + BitConverter.ToString(bytes).Replace("-", ""));

        stream.Position = 0;
        bytes = SHA256.ComputeHash(stream);
        Debug.Print(i + ": " + BitConverter.ToString(bytes).Replace("-", ""));

        stream.Position = 0;
        bytes = SHA512.ComputeHash(stream);
        Debug.Print(i + ": " + BitConverter.ToString(bytes).Replace("-", ""));
      }
      MD5.Dispose();
      SHA256.Dispose();
      SHA512.Dispose();
    }
    catch (IOException e)
    {
      Debug.Print(e.ToString());
    }
  }
}

Результат для одного большого файла (фильм ~ 10 ГБ). Для MD5 (короткий) и SHA256 (средний) я выделил отклонения жирным шрифтом. Когда вы посмотрите на результаты SHA512 (длинные), вы увидите, что из 8х, которые я провел, я получил 4x1B04E14AD6A0D1CC9D131D37D92C90146C118655B50935033A67BC0F436E9CAC424B569CCDB392D12B477DA751F30CD677023D78A55AA3CC97F8F8CD9F941D97 3xF9A6C6C61579FF989F17FB78DD23F1A4B6290588002EE58FB2C9427C75DD35D4745D15DB868CFCC94A49C9227E6C058FB89E862E50E8A06C527FC8C72EDCAFC7 1x1A3050206C8F3E94FC918F140215ADF2A9F463EAF083D421F5AF3FC450A634E9DF04C62889C3F295D504DDE34014CEF4A908C01D26770E250311816F77826B23

Это показывает, что когда это идет не так, это часто приводит к тому же неправильному хешу.

Итак, вопрос в том, почему я время от времени получаю неправильные результаты с каждым алгоритмом?

0: 920651841DF511BC45B51DABF76F08D8
0: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
0: 1B04E14AD6A0D1CC9D131D37D92C90146C118655B50935033A67BC0F436E9CAC424B569CCDB392D12B477DA751F30CD677023D78A55AA3CC97F8F8CD9F941D97

1: 920651841DF511BC45B51DABF76F08D8
1: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
1: 1A3050206C8F3E94FC918F140215ADF2A9F463EAF083D421F5AF3FC450A634E9DF04C62889C3F295D504DDE34014CEF4A908C01D26770E250311816F77826B23 * 10

2: 920651841DF511BC45B51DABF76F08D8
2: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
2: 1B04E14AD6A0D1CC9D131D37D92C90146C118655B50935033A67BC0F436E9CAC424B569CCDB392D12B477DA751F30CD677023D78A55AA3CC97F8F8CD9F941D97

3: 944638B455C6C4DBF1B4149B16360C4E
3: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
3: F9A6C6C61579FF989F17FB78DD23F1A4B6290588002EE58FB2C9427C75DD35D4745D15DB868CFCC94A49C9227E6C058FB89E862E50E8A06C527FC8C72EDCAFC7 * 1030

4: 920651841DF511BC45B51DABF76F08D8
4: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
4: 1B04E14AD6A0D1CC9D131D37D92C90146C118655B50935033A67BC0F436E9CAC424B569CCDB392D12B477DA751F30CD677023D78A55AA3CC97F8F8CD9F941D97

5: 920651841DF511BC45B51DABF76F08D8
5: 03DD7ADCA595F925E9226D1022D2FFB06F59710677E01472E4267E635DC4020A
5: F9A6C6C61579FF989F17FB78DD23F1A4B6290588002EE58FB2C9427C75DD35D4745D15DB868CFCC94A49C9227E6C058FB89E862E50E8A06C527FC8C72EDCAFC7 * 10

6: 920651841DF511BC45B51DABF76F08D8
6: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
6: 1B04E14AD6A0D1CC9D131D37D92C90146C118655B50935033A67BC0F436E9CAC424B569CCDB392D12B477DA751F30CD677023D78A55AA3CC97F8F8CD9F941D97

7: 945F30E57094D2725B727D69F7BE7F4C
7: ADA7EDB960A0EBB298E6BAB8FBF5E2C3D7D2E170B2C19B0B6432A469F2A398B7
7: F9A6C6C61579FF989F17FB78DD23F1A4B6290588002EE58FB2C9427C75DD35D4745D15DB868CFCC94A49C9227E6C058FB89E862E50E8A06C527FC8C72EDCAFC7 * 10

1 Ответ

0 голосов
/ 05 июля 2018

Кажется, как указано в некоторых комментариях, это была аппаратная проблема. После сброса BIOS, похоже, все снова работает нормально.

...