Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
1

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

28.11.2018, 14:19. Показов 4383. Ответов 19

Author24 — интернет-сервис помощи студентам
По нажатию на кнопку в 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2018, 14:19
Ответы с готовыми решениями:

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

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

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

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

19
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
28.11.2018, 14:40 2
makc555, папку нельзя открыть как файл. Что вообще означает "хеш папки" для тебя? Суммарный хеш всех файлов внутри нее?
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
28.11.2018, 15:26 3
Цитата Сообщение от makc555 Посмотреть сообщение
Как получить хеш папки?
Хешируйте все файлы в папке, попутно вычисляя хеш получаемых хешей.
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
29.11.2018, 06:18  [ТС] 4
OwenGlendower, Объясню так. У меня есть программа которая уже умеет скачивать и разархивировать файл с хостинга. Надо чтобы было еще две функции, обновить и восстановить. При обновлении программа должна проверить файлы на целостность и докачиваться недостающие файлы. А при восстановлении программа так же должна проверить файлы на целостность и при не найденном файле скачать его. Мне сказали это можно сделать через хеш, поэтому я разбираюсь как и что. Но пока не понятно. Может вы сможете помочь как сделать данные функции?
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
29.11.2018, 06:20 5
Цитата Сообщение от makc555 Посмотреть сообщение
При обновлении программа должна проверить файлы на целостность и докачиваться недостающие файлы. А при восстановлении программа так же должна проверить файлы на целостность и при не найденном файле скачать его.
Ну так и считайте хеши файлов, папка то тут причем?
0
Эксперт .NET
10564 / 6488 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
29.11.2018, 06:20 6
makc555, делаются хеши отдельных файлов.
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
29.11.2018, 06:37  [ТС] 7
Someone007, Rius, ну так а как вычислить хеш всех файлов, если их ололо 300?
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
29.11.2018, 06:44 8
Цитата Сообщение от makc555 Посмотреть сообщение
ну так а как вычислить хеш всех файлов, если их ололо 300?
Получаете список файлов в папке (и подпапках если нужно) и вычисляете в цикле хэш для каждого по отдельности...
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
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
Эксперт .NET
10564 / 6488 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
30.11.2018, 10:03 10
Открыли файл? Хорошо. Теперь надо для открытого считать хеш.
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
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
Эксперт .NET
10564 / 6488 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
30.11.2018, 10:10 12
Если будет много файлов, либо большие файлы, окно подвиснет на время расчёта.
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
30.11.2018, 10:48  [ТС] 13
Rius, А как сделать чтобы не подвисало? Добавлено через 4 минуты
Rius, Со временем решил. Теперь как сделать чтобы с хостинга или фтп сервера скачивался файл именно с определенным хешем?
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
30.11.2018, 11:15 14
Цитата Сообщение от makc555 Посмотреть сообщение
C#
1
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(s));
Здесь вычисляется хэш пути к файлу, а не содержимого файла.
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
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
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
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
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
30.11.2018, 19:13 17
Цитата Сообщение от makc555 Посмотреть сообщение
показывает один и тот же хеш для всех файлов. Не знаешь как исправить?
Проверил, выдает разные хэши для отличающихся файлов... У вас точно файлы отличаются?
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
30.11.2018, 19:15  [ТС] 18
Someone007, да. Всё файлы с разным названием и имеют разный текст внутри
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
30.11.2018, 19:25 19
Цитата Сообщение от makc555 Посмотреть сообщение
Всё файлы с разным названием и имеют разный текст внутри
Тогда не знаю в чем может быть проблема. У меня она не проявляется.
Миниатюры
Как получить хеш папки?  
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 77
30.11.2018, 20:28  [ТС] 20
Someone007, все сделал)
0
30.11.2018, 20:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2018, 20:28
Помогаю со студенческими работами здесь

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

Самый быстрый способ получить хеш строки
Добрый день! Такая проблема. Мне нужно искать дублированные строки в файле из 1 млн. строк. Если...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru