Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/47: Рейтинг темы: голосов - 47, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58

Код проверки файла md5

29.01.2013, 12:00. Показов 10663. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех.
Кто напишет "Если конечно не сложно вам будет" код проверки файла md5.

Алгоритм:
-Берем файл по адресу
-Узнаем md5 файла
-Сверяем md5 файла с "string md5 = "тут md5";
-Если все верно то выскакивает сообщения"Верно"
-Если нет то "Не верно"

Кто поможет новичку в данном деле?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2013, 12:00
Ответы с готовыми решениями:

Поиск и замена файла MD5
Приветствую. Является ли возможным что бы md5 нашел и заменил файл на PC? Если да, то буду искать исполнитель для такой вот штуки.

Вычисление и изменение MD5 у файла
Добрый день-ночи друзья! Скажите пожалуйста может кто сталкивался с такой ситуацией. Нужно получить MD5 изображения. - Это я сделал. А...

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

33
97 / 90 / 18
Регистрация: 09.06.2012
Сообщений: 215
08.02.2013, 18:12
Студворк — интернет-сервис помощи студентам
Вариантов масса
1. вариант Скачать файл с фтп, скормить его моему методу, получите md5 файл а с ФТП, проверяете его с локальным хэшем аля
C#
1
2
3
if(!GetMD5HashFromFile("путь_к_файлу_скачанному_с_фтп").Equals(GetMD5HashFromFile("путь_к_локальному_файлу"))){
  заливаем новый файл
}
2. вариант перед тем как ложить файл на фтп, получить его хэш(md5) и вместе с файлом залить его текущий хэш.
Далее качаем файл где лежит хеш текущего файла на ФТП, читаем с него md5, сравниваем с тем, что вернул метод GetMD5HashFromFile для локального файла и либо заливаем новый файл+хэш на фтп, либо пропускаем. Все зависит от задач

Готовое решение не камильфо.

Наводок много, попробуйте решить сами. Самим же полезно будет, а если вам разово, тогда может ну его это программирование?

Добавлено через 10 минут
Хмм, отредактировать сообщение что-то не получается. "Вариантов масса" читать как "Вариантов масса. Вот парочка быстро пришедших на ум"
0
 Аватар для Devastar
3 / 3 / 0
Регистрация: 30.09.2012
Сообщений: 123
09.02.2013, 04:09
100% работает. Если возникнут проблемы, пиши сюда, или в ЛС.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public string MD5Hash(string input)
        {
            MD5 md5 = MD5.Create();
            byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
            byte[] hash = md5.ComputeHash(inputBytes);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("X2"));
            }
            return sb.ToString();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string defaultPath = @"C:\Users\Виталий\AppData\Roaming\Tester\Tester.exe";
            string usingPath = "F2B25E749619A92BD1B64D5D3C194B6D"; // это хеш defaultPath
            if (MD5Hash(defaultPath).ToString() == usingPath) 
                { 
                        MessageBox.Show("YES!"); 
                } 
                else 
                { 
                        MessageBox.Show("NO!"); 
                }
        }
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
09.02.2013, 07:58  [ТС]
Цитата Сообщение от Devastar Посмотреть сообщение
100% работает. Если возникнут проблемы, пиши сюда, или в ЛС.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public string MD5Hash(string input)
        {
            MD5 md5 = MD5.Create();
            byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
            byte[] hash = md5.ComputeHash(inputBytes);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("X2"));
            }
            return sb.ToString();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string defaultPath = @"C:\Users\Виталий\AppData\Roaming\Tester\Tester.exe";
            string usingPath = "F2B25E749619A92BD1B64D5D3C194B6D"; // это хеш defaultPath
            if (MD5Hash(defaultPath).ToString() == usingPath) 
                { 
                        MessageBox.Show("YES!"); 
                } 
                else 
                { 
                        MessageBox.Show("NO!"); 
                }
        }
Увы не работает,раз пять побывал...
Вот скриншот.




Добавлено через 3 минуты
Цитата Сообщение от iptables Посмотреть сообщение
Вариантов масса
1. вариант Скачать файл с фтп, скормить его моему методу, получите md5 файл а с ФТП, проверяете его с локальным хэшем аля
C#
1
2
3
if(!GetMD5HashFromFile("путь_к_файлу_скачанному_с_фтп").Equals(GetMD5HashFromFile("путь_к_локальному_файлу"))){
  заливаем новый файл
}
2. вариант перед тем как ложить файл на фтп, получить его хэш(md5) и вместе с файлом залить его текущий хэш.
Далее качаем файл где лежит хеш текущего файла на ФТП, читаем с него md5, сравниваем с тем, что вернул метод GetMD5HashFromFile для локального файла и либо заливаем новый файл+хэш на фтп, либо пропускаем. Все зависит от задач

Готовое решение не камильфо.

Наводок много, попробуйте решить сами. Самим же полезно будет, а если вам разово, тогда может ну его это программирование?

Добавлено через 10 минут
Хмм, отредактировать сообщение что-то не получается. "Вариантов масса" читать как "Вариантов масса. Вот парочка быстро пришедших на ум"

Спасибо,а можно как-то сравнить не качая файл с фтп?

-Код берет файл с компьютера
-Код берет файл с фтп(не качая)
-Сравнивает эти два файла(если md5 сходятся,то все нормально,но а если нет,то нет)
0
97 / 90 / 18
Регистрация: 09.06.2012
Сообщений: 215
09.02.2013, 09:29
Надо смотреть, возможно сам ФТП сервер может отдать md5. Не знаю.

Добавлено через 1 минуту
99% качать придется ибо как иначе просчитать хеш то ))))
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
09.02.2013, 14:22  [ТС]
Цитата Сообщение от iptables Посмотреть сообщение
Надо смотреть, возможно сам ФТП сервер может отдать md5. Не знаю.

Добавлено через 1 минуту
99% качать придется ибо как иначе просчитать хеш то ))))
Хм,на java так реализовано,сверяет файлы не качая с фтп.
0
 Аватар для Devastar
3 / 3 / 0
Регистрация: 30.09.2012
Сообщений: 123
09.02.2013, 14:28
очень дико извиняюсь за офф топ... хочу кое что понять, для себя.
ты хеш проверяешь на C:\Users\Виталий\AppData\Roaming\Tester\ Tester.exe название пути, или только на файл Tester.exe ?
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
10.02.2013, 06:10  [ТС]
Цитата Сообщение от Devastar Посмотреть сообщение
очень дико извиняюсь за офф топ... хочу кое что понять, для себя.
ты хеш проверяешь на C:\Users\Виталий\AppData\Roaming\Tester\ Tester.exe название пути, или только на файл Tester.exe ?
Только на файл.

Добавлено через 4 часа 50 минут
верх

Добавлено через 10 часов 14 минут
аппп
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
11.02.2013, 07:48  [ТС]
верх
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
11.02.2013, 08:08
Цитата Сообщение от Maikal Посмотреть сообщение
Хм,на java так реализовано,сверяет файлы не качая с фтп.
Где на java? Дадите ссылку на док/пример?

Скорее всего на том же ftp просто лежит файлик с заранее подсчитанным md5.
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
11.02.2013, 11:40  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Где на java? Дадите ссылку на док/пример?

Скорее всего на том же ftp просто лежит файлик с заранее подсчитанным md5.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package net.sashok724.launcher.utils;
 
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import net.sashok724.launcher.components.Frame;
import net.sashok724.launcher.components.Game;
import net.sashok724.launcher.run.Settings;
 
public class GuardUtils
{
    public static String getMD5(String filename)
    {
        FileInputStream fis = null;
        DigestInputStream dis = null;
        BufferedInputStream bis = null;
        Formatter formatter = null;
        try
        {   
            MessageDigest messagedigest = MessageDigest.getInstance("MD5");
            fis = new FileInputStream(filename);
            bis = new BufferedInputStream(fis);
            dis = new DigestInputStream(bis, messagedigest);
            while(dis.read() != -1);
            byte abyte0[] = messagedigest.digest();
            formatter = new Formatter();
            byte abyte1[] = abyte0;
            int i = abyte1.length;
            for(int j = 0; j < i; j++)
            {
                byte byte0 = abyte1[j];
                formatter.format("%02x", new Object[] { Byte.valueOf(byte0) });
            }
            BaseUtils.send("ANTICHEAT: MD5 of " + filename + " getted, " + formatter.toString());
            return formatter.toString();
        } catch(Exception e) { return BaseUtils.empty; }
        finally
        {
            try { fis.close(); } catch (Exception e){}
            try { dis.close(); } catch (Exception e){}
            try { bis.close(); } catch (Exception e){}
            try { formatter.close(); } catch (Exception e){}
        }
    }
    
    public static List<String> updateMods(String answer)
    {
        List<String> files = new ArrayList<String>();
        
        if(Settings.useModCheck)
        {
            if(answer.split("<br>")[2].equals("nomods"))
            {
                File dir = new File(BaseUtils.getMcDir().getAbsolutePath() + File.separator + "mods");
                String[] dirFiles = dir.list(new FilenameFilter() { public boolean accept(File folder, String name)
                {
                    return name.toLowerCase().endsWith(".zip") || name.toLowerCase().endsWith(".jar");
                }});
                if(dirFiles == null || dirFiles.length == 0) return files;
                for(String cfile : dirFiles)
                {
                    File file = new File(dir.getAbsolutePath() + File.separator + cfile);
                    file.delete();
                    BaseUtils.send("ANTICHEAT: Mod file deleted: " + cfile);
                }
                return files;
            }
            BaseUtils.send("ANTICHEAT: Checking mods...");
            File dir = new File(BaseUtils.getMcDir().getAbsolutePath() + File.separator + "mods");
            String mods = answer.split("<br>")[2];
            
            String[] modsArray = answer.split("<br>")[2].split("<:>");
            
            if(Frame.main.updatepr.isSelected())
            {
                for(String mod : modsArray) files.add("mods/" + mod.split(":>")[0]);
                return files;
            }
            
            if(dir.exists() && dir.isDirectory())
            {
                String[] dirFiles = dir.list(new FilenameFilter() { public boolean accept(File folder, String name)
                {
                    return name.toLowerCase().endsWith(".zip") || name.toLowerCase().endsWith(".jar");
                }});
                for(String cfile : dirFiles)
                {
                    File file = new File(dir.getAbsolutePath() + File.separator + cfile);
                    String md5 = GuardUtils.getMD5(file.getAbsolutePath());
                    if(!mods.contains(cfile + ":>" + md5 + "<:>"))
                    {
                        file.delete();
                        BaseUtils.send("ANTICHEAT: Mod file deleted: " + cfile);
                        mods = mods.replaceAll(cfile + ":>" + md5 + "<:>", BaseUtils.empty);
                        modsArray = mods.split("<:>");
                    }
                }
                String dirFilesString = BaseUtils.empty;
                for(String file : dirFiles) dirFilesString += file + ":>" + GuardUtils.getMD5(dir.getAbsolutePath() + File.separator + file) + "<:>";
                for(String mod : modsArray) { if(!dirFilesString.contains(mod))
                {
                    files.add("mods/" + mod.split(":>")[0]);
                    BaseUtils.send("ANTICHEAT: Mod file added: " + mod.split(":>")[0]);
                }}
            } else for(String mod : modsArray) files.add("mods/" + mod.split(":>")[0]);
        }
        
        return files;
    }
    
    public static void checkMods(String answer, boolean action)
    {
        if(!Frame.main.offline.isSelected())
        {
            BaseUtils.send("ANTICHEAT: Rechecking jars...");
            boolean ret = false;
            String binfolder = BaseUtils.getMcDir() + File.separator + "bin" + File.separator;
            if(!answer.split("<br>")[0].split("<:>")[2].equals(GuardUtils.getMD5(binfolder + "lwjgl.jar"))) ret = true;
            if(!answer.split("<br>")[0].split("<:>")[3].equals(GuardUtils.getMD5(binfolder + "lwjgl_util.jar"))) ret = true;
            if(!answer.split("<br>")[0].split("<:>")[4].equals(GuardUtils.getMD5(binfolder + "jinput.jar"))) ret = true;
            if(!answer.split("<br>")[0].split("<:>")[1].equals(GuardUtils.getMD5(binfolder + "minecraft.jar"))) ret = true;
            if(GuardUtils.updateMods(answer).size() != 0) ret = true;
            
            if(ret && action)
            {
                Frame.main.setError("Ошибка вторичной проверки кеша.");
                return;
            } else if(ret && !action)
            {
                BaseUtils.send("ANTICHEAT: Strange mods detected");
                Game.mcapplet.stop();
                Game.mcapplet.destroy();
                System.exit(0);
                return;
            }
            
            BaseUtils.send("ANTICHEAT: Mod checking done");
        }
    }
}
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
11.02.2013, 12:00
Ну вот, откуда берется answer в checkMods?
Сто пудов, скачивается отдельно или с сайта, или с того же ftp.
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
18.02.2013, 16:54  [ТС]
Ребята вот сделал по другому.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public string ComputeMD5Checksum(string path)
        {
            using (FileStream fs = System.IO.File.OpenRead(@"C:\test.exe"))
            {
                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;
            }
        }       
        private void button3_Click(object sender, EventArgs e)
        {
        string usingPath = ("48677dc4c2b98c29918722b5ab27b4fd");
        if (ComputeMD5Checksum(checkSum).ToString() == usingPath.ToLower())       
        {
                MessageBox.Show("хеш совпал");
            }
            else
            {
                MessageBox.Show("хеш не совпал");
            }
        
        }

Ошибку выдает.

Скриншот
0
97 / 90 / 18
Регистрация: 09.06.2012
Сообщений: 215
18.02.2013, 17:51
ComputeMD5Checksum принимает путь к файлу на одном из локальных дисков но нигде не используется , а также возвращает хеш в верхнем регистре.Попробуйте так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public 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);
                return  BitConverter.ToString(checkSum).Replace("-", String.Empty);
            }
        }       
        private void button3_Click(object sender, EventArgs e)
        {
        string usingPath = ("48677dc4c2b98c29918722b5ab27b4fd");
        if (ComputeMD5Checksum(@"C:\test.exe").Equals(usingPath.ToUpper()))       
        {
                MessageBox.Show("хеш совпал");
            }
            else
            {
                MessageBox.Show("хеш не совпал");
            }
        
        }
3
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 58
18.02.2013, 18:51  [ТС]
Спасибо,тему можно закрывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2013, 18:51

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

Не совпадение md5 хеша файла (php и C#)
Доброго времени суток. Не получается получить одинаковые md5 хеши файлов на php и C#. В php использую стандартную функцию md5_file(), в...

Разобрать код Петрова для проверки "четности" хеш-суммы MD5
Скинули мне ссылку на публикацию Петрова (уж какого именно не знаю), под названием &quot;В поисках бинарного грааля&quot;, где приводится...

Где можно найти готовый исходный код MD5 для файла?
MD5 - исходный код на СИ / С++? Где можно найти готовый исходный код MD5 для файла?

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


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru