Использование метода для хэширования файла в C #: невозможно преобразовать из 'System.IO.Filestream' в 'System.ArraySegment <byte>' - PullRequest
0 голосов
/ 22 июня 2019

Я работаю над проектом, который использует эту библиотеку C #: https://www.nuget.org/packages/SauceControl.Blake2Fast/

Это алгоритм хеширования.Я пытаюсь получить небольшой тестовый файл для хэширования, но я новичок и давно не программировал.Просто используя

var hash = Blake2b.ComputeHash("C:\\Users\\Username\\Desktop\\files.txt");

Я получаю cannot convert from 'string' to 'System.ArraySegment<byte>'.

Хорошо, поэтому я предполагаю, что мне нужно прочитать поток файла.Я адаптировал пример и попробовал это:

    private void Button2_Click(object sender, EventArgs e)
    {
        // Specify a file to read from and to create.
        string pathSource = @"C:\Users\Username\Desktop\files.txt";

        try
        {

            using (FileStream fsSource = new FileStream(pathSource,
                FileMode.Open, FileAccess.Read))
            {

                // Read the source file into a byte array.
                byte[] bytes = new byte[fsSource.Length];
                int numBytesToRead = (int)fsSource.Length;
                int numBytesRead = 0;
                while (numBytesToRead > 0)
                {
                    // Read may return anything from 0 to numBytesToRead.
                    int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

                    // Break when the end of the file is reached.
                    if (n == 0)
                        break;

                    numBytesRead += n;
                    numBytesToRead -= n;
                }
                numBytesToRead = bytes.Length;
                var hash = Blake2b.ComputeHash(fsSource);
            }
        }
        catch (FileNotFoundException ioEx)
        {
            Console.WriteLine(ioEx.Message);
        }
    }
}

Я получаю похожее сообщение cannot convert from 'System.IO.Filestream' to 'System.ArraySegment<byte>'.

Я планирую написать утилиту, которая получает контрольные суммы файлов с использованием этого алгоритма хеширования.Файлы могут быть маленькими или большими, локальными или на сетевом диске, поэтому мне придется учитывать это.Я просто не совсем уверен, куда идти отсюда.Я действительно только работал с очень простым чтением текстовых файлов, и это было некоторое время назад.Я не знаком с достаточным количеством более продвинутых методов и не уверен, что лучше всего использовать, и как его использовать.

Как я могу заставить этот метод обрабатывать файл, используя заданный путь к файлу?

...