Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
.NET 4.x

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане. Недавно начал изучать c#. Я пишу лаунчер для одной игры и для этой игры нужен апдейтер. Вот алгоритм действий апдейтера:
1. Вычисляем MD5 сумму важных папок клиента, при это исключаем некоторые файлы (настройки юзера).
2. Сверяем ее с MD5 суммой клиента на сервере (клиент в распакованном виде будет лежать на сервере FTP или просто на апаче)
3. Если клиент не прошел проверку, узнать какие файлы не прошли проверку
4. Скачать эти файлы с сервера.
5. Еще раз проверяем и если проверка неудачна возвращаемся к пункту 1, но не больше 5 раз повторяем весь цикл.
При этом есть:
1. Файлы которые трогать не надо. (Возможно когда-то их пригодится обновить, но не всегда)
2. Файлы которые возможно не существуют у пользователя.
3. Файлы которые нужно обновить.
Прошу подсказать, как такое осуществить, искал во всемогущем гугле - ничего толкового не нашел.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.08.2013, 22:01
Ответы с готовыми решениями:

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

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

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

9
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
22.08.2013, 00:45
проверить хеш-сумму можно так
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
14 / 18 / 5
Регистрация: 13.04.2011
Сообщений: 148
22.08.2013, 03:52
вообще было бы логично сделать на сервере в директории с обновлениями файл в котором будет храниться контрольная сумма нужных файлов, а у себя ее вычислять, ну потом сравнивать естессно.
Если при сравнении суммы не совпадают, то думаю придется по отдельности каждому файлу сравнивать. Я бы делал через списки контрольных сумм файлов. Допустим хранил бы их в виде массива структур и потом сравнивал, но сомневаюсь что это грамотный подход.
1
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
22.08.2013, 10:36  [ТС]
Цитата Сообщение от _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
14 / 18 / 5
Регистрация: 13.04.2011
Сообщений: 148
22.08.2013, 11:58
Цитата Сообщение от YesIsGood Посмотреть сообщение
И что это, код класса? Если добавить using (var file = File.OpenRead("some.file")), то Identifier expected
это просто кусок кода который определяет контрольную сумму, хотите в класс его вставьте, хотите просто в метод отдельный. Это уже ваше дело.
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
24.08.2013, 10:30  [ТС]
Цитата Сообщение от natrox Посмотреть сообщение
это просто кусок кода который определяет контрольную сумму, хотите в класс его вставьте, хотите просто в метод отдельный. Это уже ваше дело.
Ок. А можно ли проверить MD5 папки? Просто каждый файл по отдельности проверять это бред.
0
 Аватар для t1m0n
638 / 416 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
24.08.2013, 19:29
Цитата Сообщение от YesIsGood Посмотреть сообщение
MD5 папки?
нельзя

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

многие игровые клиенты при апдейте скачивают файлик с именами и хешами файлов и проверяют
то что не сходится скачивается
Ок. До меня дошло про какой файлик вы говорите. Я так понял апдейтер будет как из конфига xml брать параметры для класса который вычисляет MD5 и обновляет файл. В каком формате лучше делать - в xml или просто текстовый файл. Где-то читал про чтение параметров из файла (по-моему на этом же форуме) - сказали лучше через xml.
0
 Аватар для natrox
14 / 18 / 5
Регистрация: 13.04.2011
Сообщений: 148
25.08.2013, 11:55
Цитата Сообщение от YesIsGood Посмотреть сообщение
В каком формате лучше делать - в xml или просто текстовый файл
Естессно в xml, потому как потом проще будет выдернуть нужную инфу оттуда. А не заморачиваться с бешенными алгоритмами для поиска нужной вам информации. Потом просто по тегам можно будет найти нужную часть.
1
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 22
25.08.2013, 12:28  [ТС]
Цитата Сообщение от natrox Посмотреть сообщение
Естессно в xml, потому как потом проще будет выдернуть нужную инфу оттуда. А не заморачиваться с бешенными алгоритмами для поиска нужной вам информации. Потом просто по тегам можно будет найти нужную часть.
Спасибо, уже нашел статью по xml, буду пилить его.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.08.2013, 12:28
Помогаю со студенческими работами здесь

Проверка файла на MD5 и SHA1 и сравнение с готовым MD5 и SHA1
Есть файл text.txt на него md5:53734131cd0cf82dfbbe85e0459089e9 и sha1:8f38ce7cb44c0b78f9cb4de6ddedba2107525386 Код: @echo off ...

Проверка целостности числа
Вопрос скорее для учащихся 10ых классов чем профессионалам...не знаю как это собственно стало моей проблемой.Гугл толком не помог. если...

Проверка целостности данных
Привет! При загрузке базы данных, мне надо проверить, есть ли в ней таблицы с определенным именем, если нет - создать такую. Как можно это...

Проверка целостности данных
Необходимо убедиться, что НЕОБХОДИМЫЙ_ОБЪЕМ_МОЗГА &lt;= ОБЪЕМ_МОЗГА для всех животных из таблиц ВИД_ОРУДИЕ_ТРУДА или ВИД_ДЕЙСТВИЕ. Куда...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru