Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
1

Как получить хеш папки?

28.11.2018, 14:19. Просмотров 1003. Ответов 19

По нажатию на кнопку в textBox1 должен выводиться хеш папки с файлами. Папка называется "alt"
После нажатия на кнопку выдает ошибку System.UnauthorizedAccessException: "Отказано в доступе по пути "путь до файла"."

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private string ComputeMD5Checksum(string path)
        {
            using (FileStream fs = System.IO.File.OpenRead(path))
            using (MD5 md5 = new MD5CryptoServiceProvider())
            {
                byte[] checkSum = md5.ComputeHash(fs);
                string result = BitConverter.ToString(checkSum).Replace("-", String.Empty);
                return result;
            }
        }
 
        private void button3_Click_1(object sender, EventArgs e)
        {
            textBox1.Text = ComputeMD5Checksum("alt");
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2018, 14:19
Ответы с готовыми решениями:

Как получить хеш пароля пользователя
hash = pbkdf2(password, salt, iterations, digest=self.digest) hash =...

Как получить MD5-хеш файла
Добрый дннь уважаемые форумчане. Хотел бы у вас поинтересоваться. Собственно пишу я лаунчер на...

Как получить папки в папках и т.д.?
// поиск папок на диске try { string dirPath =...

Как получить хэш папки?
Доброго времени суток! Нарыл вот такуюl темку, однако ругается на последнюю строчку кода, якобы md5...

Как получить содержимое папки?
Допустим я через диалог указываю папку, а мне,например, в комбобокс выводятся названия всех файлов...

19
OwenGlendower
Супер-модератор
Эксперт .NET
10749 / 9177 / 3911
Регистрация: 17.03.2014
Сообщений: 18,361
Записей в блоге: 1
Завершенные тесты: 2
28.11.2018, 14:40 2
makc555, папку нельзя открыть как файл. Что вообще означает "хеш папки" для тебя? Суммарный хеш всех файлов внутри нее?
0
kolorotur
Эксперт .NET
11603 / 9360 / 2383
Регистрация: 17.09.2011
Сообщений: 16,019
Завершенные тесты: 1
28.11.2018, 15:26 3
Цитата Сообщение от makc555 Посмотреть сообщение
Как получить хеш папки?
Хешируйте все файлы в папке, попутно вычисляя хеш получаемых хешей.
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
29.11.2018, 06:18  [ТС] 4
OwenGlendower, Объясню так. У меня есть программа которая уже умеет скачивать и разархивировать файл с хостинга. Надо чтобы было еще две функции, обновить и восстановить. При обновлении программа должна проверить файлы на целостность и докачиваться недостающие файлы. А при восстановлении программа так же должна проверить файлы на целостность и при не найденном файле скачать его. Мне сказали это можно сделать через хеш, поэтому я разбираюсь как и что. Но пока не понятно. Может вы сможете помочь как сделать данные функции?
0
29.11.2018, 06:18
Someone007
3172 / 2358 / 1052
Регистрация: 09.05.2015
Сообщений: 5,852
Завершенные тесты: 1
29.11.2018, 06:20 5
Цитата Сообщение от makc555 Посмотреть сообщение
При обновлении программа должна проверить файлы на целостность и докачиваться недостающие файлы. А при восстановлении программа так же должна проверить файлы на целостность и при не найденном файле скачать его.
Ну так и считайте хеши файлов, папка то тут причем?
0
Rius
Эксперт .NET
5868 / 3749 / 904
Регистрация: 25.05.2015
Сообщений: 11,422
Записей в блоге: 12
Завершенные тесты: 4
29.11.2018, 06:20 6
makc555, делаются хеши отдельных файлов.
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
29.11.2018, 06:37  [ТС] 7
Someone007, Rius, ну так а как вычислить хеш всех файлов, если их ололо 300?
0
Someone007
3172 / 2358 / 1052
Регистрация: 09.05.2015
Сообщений: 5,852
Завершенные тесты: 1
29.11.2018, 06:44 8
Цитата Сообщение от makc555 Посмотреть сообщение
ну так а как вычислить хеш всех файлов, если их ололо 300?
Получаете список файлов в папке (и подпапках если нужно) и вычисляете в цикле хэш для каждого по отдельности...
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
30.11.2018, 09:46  [ТС] 9
Rius, Все равно не догоняю. Вот код который по очереди открывает все файлы! Дальше то что? Как сделать чтобы программа выводила в лист бокс хеш каждого файла?

C#
1
2
3
4
5
6
7
8
9
        private void button3_Click_2(object sender, EventArgs e)
        {
            List<string> files1 = Directory.GetFiles(@"файл").ToList<string>();
            foreach (var s in files1)
            {
                StreamReader sr = new StreamReader(s);
                                                     
            }
        }
0
Rius
Эксперт .NET
5868 / 3749 / 904
Регистрация: 25.05.2015
Сообщений: 11,422
Записей в блоге: 12
Завершенные тесты: 4
30.11.2018, 10:03 10
Открыли файл? Хорошо. Теперь надо для открытого считать хеш.
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
30.11.2018, 10:05  [ТС] 11
Rius, Вот так выводятся хеши в лист бокс. Спасибо большое)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void button3_Click_2(object sender, EventArgs e)
        {
            List<string> files1 = Directory.GetFiles(@"файл").ToList<string>();
            foreach (var s in files1)
            {
                StreamReader sr = new StreamReader(s);
                MD5 md5Hasher = MD5.Create();
                byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(s));
                StringBuilder sBuilder = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                sBuilder.ToString();
                listBox1.Items.Add(sBuilder);
            }
        }
0
Rius
Эксперт .NET
5868 / 3749 / 904
Регистрация: 25.05.2015
Сообщений: 11,422
Записей в блоге: 12
Завершенные тесты: 4
30.11.2018, 10:10 12
Если будет много файлов, либо большие файлы, окно подвиснет на время расчёта.
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
30.11.2018, 10:48  [ТС] 13
Rius, А как сделать чтобы не подвисало? Добавлено через 4 минуты
Rius, Со временем решил. Теперь как сделать чтобы с хостинга или фтп сервера скачивался файл именно с определенным хешем?
0
kolorotur
Эксперт .NET
11603 / 9360 / 2383
Регистрация: 17.09.2011
Сообщений: 16,019
Завершенные тесты: 1
30.11.2018, 11:15 14
Цитата Сообщение от makc555 Посмотреть сообщение
C#
1
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(s));
Здесь вычисляется хэш пути к файлу, а не содержимого файла.
0
Someone007
3172 / 2358 / 1052
Регистрация: 09.05.2015
Сообщений: 5,852
Завершенные тесты: 1
30.11.2018, 12:16 15
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private string ComputeMD5Checksum(string path)
        {
            using (FileStream fs = System.IO.File.OpenRead(path))
            using (MD5 md5 = new MD5CryptoServiceProvider())
            {
                byte[] checkSum = md5.ComputeHash(fs);
                string result = BitConverter.ToString(checkSum).Replace("-", String.Empty);
                return result;
            }
        }
 
        private void button3_Click_2(object sender, EventArgs e)
        {
            var files = Directory.GetFiles(@"путь к папке");
            foreach (var file in files)
            {
                listBox1.Items.Add(ComputeMD5Checksum(file));
            }
        }
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
30.11.2018, 19:05  [ТС] 16
Someone007, показывает один и тот же хеш для всех файлов. Не знаешь как исправить?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private string ComputeMD5Checksum(string path)
        {
            using (FileStream fs = System.IO.File.OpenRead(path))
            using (MD5 md5 = new MD5CryptoServiceProvider())
            {
                byte[] checkSum = md5.ComputeHash(fs);
                string result = BitConverter.ToString(checkSum).Replace("-", String.Empty);
                return result;
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            List<string> files = Directory.GetFiles(@"файл").ToList<string>();
            foreach (var file in files)
            {
                listBox1.Items.Add(ComputeMD5Checksum(file));
            }
        }
0
Someone007
3172 / 2358 / 1052
Регистрация: 09.05.2015
Сообщений: 5,852
Завершенные тесты: 1
30.11.2018, 19:13 17
Цитата Сообщение от makc555 Посмотреть сообщение
показывает один и тот же хеш для всех файлов. Не знаешь как исправить?
Проверил, выдает разные хэши для отличающихся файлов... У вас точно файлы отличаются?
0
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
30.11.2018, 19:15  [ТС] 18
Someone007, да. Всё файлы с разным названием и имеют разный текст внутри
0
Someone007
3172 / 2358 / 1052
Регистрация: 09.05.2015
Сообщений: 5,852
Завершенные тесты: 1
30.11.2018, 19:25 19
Цитата Сообщение от makc555 Посмотреть сообщение
Всё файлы с разным названием и имеют разный текст внутри
Тогда не знаю в чем может быть проблема. У меня она не проявляется.
0
Миниатюры
Как получить хеш папки?  
makc555
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 40
30.11.2018, 20:28  [ТС] 20
Someone007, все сделал)
0
30.11.2018, 20:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2018, 20:28

Как получить иконку из файла или из папки?
Здравствуйте! Хочу сделать что-то типа проводника с использованием TreeView, только проблема в том,...

Как получить все ресурсы(картинки) из папки ресурсов
Ну вопрос, заключается в том, что у меня есть несколько папок с картинками, такие как grass, wood....

Как получить имя папки, если знаешь путь к ней?
Здравствуйте, Подскажите как получить имя папки, зная путь к ней. Вот что я пытаюсь сделать: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru