Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Вычисление md5 хеш суммы файла с прогресс баром.

Ответить
Настройки темы
.NET - Вычисление md5 хеш суммы файла с прогресс баром.

Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


Задача вычислять md5 хеш сумму файла и отображать ход вычисления в прогресс баре.
метод уже готов осталось только как-то отобразить ход в прогресс баре.
Код: Выделить весь код
private string ComputeMD5Checksum(string path)
        {
            using (FileStream fs = System.IO.File.OpenRead(path))
            {
                MD5 md5 = new MD5CryptoServiceProvider();
            
                byte[] fileData = new byte[fs.Length];
                fs.Read(fileData, 0, (int)fs.Length);
                byte[] checkSum = md5.ComputeHash(fileData);
                string result = BitConverter.ToString(checkSum).Replace("-", String.Empty);
                return result;
            }
        }

Отправлено: 20:17, 06-08-2014

 

Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата DoroViska:
27 гб вычисляется минут 5 на галимом пк »
Вы свою программу без прогресс-бара проверяли?

Поясните вот этот кусок:
Цитата DoroViska:
byte[] fileData = new byte[fs.Length];
fs.Read(fileData, 0, (int)fs.Length); »
Насколько я понимаю, вы создаете массив размером = длина файла, а потом копируете весь файл в память. У вас 27 Гб ОЗУ? Начните с чтения учебника по .NET, к примеру...
Цитата Iska:
Читайте и вычисляйте кусками, например, по 8-16 Мб (и тут-то делайте прогресс-бар), складывайте полученные хэши кусков в строку, затем хэшируйте саму эту строку. »
Да, часто бывает метод типа Update(byte []), которому можно по кускам скармливать...

Отправлено: 13:06, 08-08-2014 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата User001:
Да, часто бывает метод типа Update(byte []), которому можно по кускам скармливать... »
Нет, тут я как раз напрямую говорю — мы не считаем хэш всего файла. Мы считаем хэши мелких кусков, склеиваем их в одну переменную (хоть массивом байт, хоть строкой) и ещё раз считаем хэш, теперь уже этого полученного набора. В авторском случае неважно считать хэш на весь файл или таким вот макаром. Хотя для самой задачи обновления давно есть решение — MSI.

Отправлено: 13:29, 08-08-2014 | #12


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата DoroViska:
висячая надпись подождите идёт вычисление md5 для нубка говорит о том что надо закрыть приложение буд-то оно зависло »
Ну раз уж нет возможности читать по кускам, добавьте вы надпись: Старт в <время>, покажите Прогресс бар, который не по квадратикам заполняется, а постоянно (свойство контрола). И добавьте текст - примерное время обновления - 5 минут. И в отдельном потоке таймер выполнения.
Когда человек видит, что на форме что то "тикает", это указывает ему на то, что приложение не зависло...

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:06, 29-08-2014 | #13


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Delirium, в этом случае не прогресс-бар нужен, а, скорее, что-то наподобие такого:

Отправлено: 07:50, 29-08-2014 | #14


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата Iska:
в этом случае не прогресс-бар нужен, а, скорее, что-то наподобие такого »
Не люблю когда такие элементы на прогресс бар похожими делают (квадратики циклически бегают).

Отправлено: 10:57, 29-08-2014 | #15


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Так я и говорю, что не в виде полосы, а в виде круга.

Предложение же коллеги Delirium имеет право на жизнь в том случае, если время вычисления хэша объёма всего файла пропорционально коррелирует со временем вычисления хэша небольшой части, взятой для оценки. Т.е., к примеру, если соблюдается примерное соотношение (время вычисления MD5 для 1Gb / 2¹⁰) ≈ время вычисления MD5 для 1Mb. Так оно или нет — я не знаю, не проверял.

Отправлено: 17:00, 29-08-2014 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Вычисление md5 хеш суммы файла с прогресс баром.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инфо - Контрольные суммы MD5 дистрибутивов Windows prokazzza Наборы обновлений для Windows XP/2003/Windows 7 171 28-07-2018 21:29
VBS/WSH/JS - Вычисление хэша MD5 строки Iska Скриптовые языки администрирования Windows 2 28-01-2015 15:40
как расшифровать хеш md5 в форуме YaBB и перенос пользователей в Drupal koresaram Хочу все знать 15 05-11-2014 15:16
[решено] Не сходятся с указанными хеш-суммы 2-х драйверов liks Хочу все знать 5 22-08-2012 23:58
CMD/BAT - помогите разобраться с прогресс-баром medvedozayac@vk Скриптовые языки администрирования Windows 0 12-04-2012 21:49




 
Переход