Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
YesIsGood
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
1

Проверка целостности клиента на C# через MD5

21.08.2013, 22:01. Просмотров 1217. Ответов 9
Метки нет (Все метки)

Здравствуйте, форумчане. Недавно начал изучать c#. Я пишу лаунчер для одной игры и для этой игры нужен апдейтер. Вот алгоритм действий апдейтера:
1. Вычисляем MD5 сумму важных папок клиента, при это исключаем некоторые файлы (настройки юзера).
2. Сверяем ее с MD5 суммой клиента на сервере (клиент в распакованном виде будет лежать на сервере FTP или просто на апаче)
3. Если клиент не прошел проверку, узнать какие файлы не прошли проверку
4. Скачать эти файлы с сервера.
5. Еще раз проверяем и если проверка неудачна возвращаемся к пункту 1, но не больше 5 раз повторяем весь цикл.
При этом есть:
1. Файлы которые трогать не надо. (Возможно когда-то их пригодится обновить, но не всегда)
2. Файлы которые возможно не существуют у пользователя.
3. Файлы которые нужно обновить.
Прошу подсказать, как такое осуществить, искал во всемогущем гугле - ничего толкового не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 22:01
Ответы с готовыми решениями:

Проверка целостности (сrc сумм) файлов на диске
В общем задание следующее: требуется проверить целостность файла(ов), которые...

Проверка md5 папки
как можно получить md5 папки?

Проверка клиента
Добрый вечер! Вопрос такой - к чему вообще можно в самом простом случае...

Общение клиента и сервера через Интернет
Добрый день. Я тут хочу написать не большой клиент типо garena тока не для игр...

Запрос к MySQL. Через WorkBench запрос выполняется, а через клиента - нет
Добрый день! Помогите с запросом! string CommandText = "SELECT * FROM...

9
_lunar_
1451 / 1367 / 185
Регистрация: 03.05.2011
Сообщений: 3,175
Завершенные тесты: 1
22.08.2013, 00:45 2
проверить хеш-сумму можно так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using (var file = File.OpenRead("some.file"))
{
    byte[] buffer = new byte[file.Length];
    file.Read(buffer, 0, buffer.Length);
    byte[] result;
    MD5 md5 = new MD5CryptoServiceProvider();
    result = md5.ComputeHash(buffer);
    string str = null;
    for (int i = 0; i < result.Length; i++)
        str += result[i];
   
    // проверка str со значением, лежащим на сервере
    if (str != "1281361704418518414517990134103909563243226")
    {
        // повторяем попытку или что-то ещё ...
    }
}
ну а всё это запихать в цикл и отобрать файлы думаю сами разберётесь.
1
natrox
12 / 16 / 5
Регистрация: 13.04.2011
Сообщений: 148
22.08.2013, 03:52 3
вообще было бы логично сделать на сервере в директории с обновлениями файл в котором будет храниться контрольная сумма нужных файлов, а у себя ее вычислять, ну потом сравнивать естессно.
Если при сравнении суммы не совпадают, то думаю придется по отдельности каждому файлу сравнивать. Я бы делал через списки контрольных сумм файлов. Допустим хранил бы их в виде массива структур и потом сравнивал, но сомневаюсь что это грамотный подход.
1
YesIsGood
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
22.08.2013, 10:36  [ТС] 4
Цитата Сообщение от _lunar_ Посмотреть сообщение
проверить хеш-сумму можно так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using (var file = File.OpenRead("some.file"))
{
    byte[] buffer = new byte[file.Length];
    file.Read(buffer, 0, buffer.Length);
    byte[] result;
    MD5 md5 = new MD5CryptoServiceProvider();
    result = md5.ComputeHash(buffer);
    string str = null;
    for (int i = 0; i < result.Length; i++)
        str += result[i];
   
    // проверка str со значением, лежащим на сервере
    if (str != "1281361704418518414517990134103909563243226")
    {
        // повторяем попытку или что-то ещё ...
    }
}
ну а всё это запихать в цикл и отобрать файлы думаю сами разберётесь.
Можно ли проверить сумму папки?

Добавлено через 6 минут
И что это, код класса? Если добавить using (var file = File.OpenRead("some.file")), то Identifier expected
0
natrox
12 / 16 / 5
Регистрация: 13.04.2011
Сообщений: 148
22.08.2013, 11:58 5
Цитата Сообщение от YesIsGood Посмотреть сообщение
И что это, код класса? Если добавить using (var file = File.OpenRead("some.file")), то Identifier expected
это просто кусок кода который определяет контрольную сумму, хотите в класс его вставьте, хотите просто в метод отдельный. Это уже ваше дело.
0
YesIsGood
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
24.08.2013, 10:30  [ТС] 6
Цитата Сообщение от natrox Посмотреть сообщение
это просто кусок кода который определяет контрольную сумму, хотите в класс его вставьте, хотите просто в метод отдельный. Это уже ваше дело.
Ок. А можно ли проверить MD5 папки? Просто каждый файл по отдельности проверять это бред.
0
t1m0n
627 / 405 / 27
Регистрация: 03.11.2009
Сообщений: 1,837
24.08.2013, 19:29 7
Цитата Сообщение от YesIsGood Посмотреть сообщение
MD5 папки?
нельзя

многие игровые клиенты при апдейте скачивают файлик с именами и хешами файлов и проверяют
то что не сходится скачивается
1
YesIsGood
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
25.08.2013, 10:12  [ТС] 8
Цитата Сообщение от t1m0n Посмотреть сообщение
нельзя

многие игровые клиенты при апдейте скачивают файлик с именами и хешами файлов и проверяют
то что не сходится скачивается
Ок. До меня дошло про какой файлик вы говорите. Я так понял апдейтер будет как из конфига xml брать параметры для класса который вычисляет MD5 и обновляет файл. В каком формате лучше делать - в xml или просто текстовый файл. Где-то читал про чтение параметров из файла (по-моему на этом же форуме) - сказали лучше через xml.
0
natrox
12 / 16 / 5
Регистрация: 13.04.2011
Сообщений: 148
25.08.2013, 11:55 9
Цитата Сообщение от YesIsGood Посмотреть сообщение
В каком формате лучше делать - в xml или просто текстовый файл
Естессно в xml, потому как потом проще будет выдернуть нужную инфу оттуда. А не заморачиваться с бешенными алгоритмами для поиска нужной вам информации. Потом просто по тегам можно будет найти нужную часть.
1
YesIsGood
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
25.08.2013, 12:28  [ТС] 10
Цитата Сообщение от natrox Посмотреть сообщение
Естессно в xml, потому как потом проще будет выдернуть нужную инфу оттуда. А не заморачиваться с бешенными алгоритмами для поиска нужной вам информации. Потом просто по тегам можно будет найти нужную часть.
Спасибо, уже нашел статью по xml, буду пилить его.
0
25.08.2013, 12:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2013, 12:28

Проверка целостности файла (Md5)
Всем доброго времени суток форумчане. Собственно в C# Я еще не селен,только...

Проверка целостности файлов через XCOPY и анализ кода возврата ошибки
Всем доброго времени суток! Прошу помощи в решении данного задания. &quot;Проверка...

Проверка MD5 локального файла с MD5 записанных в двух разных текстовых файлах
Задача такова: Public Function CheckHash(LocalPath As Object, MD5File As...


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

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

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