Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/112: Рейтинг темы: голосов - 112, средняя оценка - 4.74
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798

Как получить контрольную сумму(MD5, SHA1, SHA256) у файла

18.08.2010, 15:33. Показов 22413. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, помогите в вопросе.

Как получить программным способом контрольную сумму файла?

Пробовал самостоятельно поиском найти решение, но дальше этого не продвинулся
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString stroka = "Строка";
IdCoderMD51->AutoCompleteInput = true;
Edit1->Text = IdCoderMD51->CodeString(stroka);
IdCoderMD51->AutoCompleteInput = false;
IdCoderMD51->Reset(); 
}
Мне нужно в переменную AnsiString сохранять полученую контрольную сумму, с дальнейшей её проверкой, по принципу: одна операция - одно получение MD5 - одна проверка. Алгоритм следующий: Открыли файл - получили его MD5 - проверили. Больше ничего не нужно на этом этапе, дальше я справлюсь самостоятельно, мне только научиться получить контрольную сумму файла и сохранить её в переменную.

Как это код получения контрольных сумм выглядит? Буду признателен.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2010, 15:33
Ответы с готовыми решениями:

Как получить md5 из файла
Взял исходник здесь Но при компиляции выдает 3 ошибки: Что не понравилось ?

Получить хеш файла (CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH....)
Нужно написать приложение выводящее один любой хеш указанного файла, независящий от названия файла. CRC32, MD5, SHA1, TTH, ED2K,...

Проверка файла на контрольную сумму MD5
возникла такая мысль как сделать так, чтобы получить md5 указанного файла? к примеру я хочу сделать так if(md5(files.exe) ==...

16
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 15:35
можно поработать через шелл с md5sum
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
18.08.2010, 15:39  [ТС]
iama, Можно показать на действующем примере как?
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 15:46
Я просто подал идею, самому как-то не приходилось с командной строкой работать.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.08.2010, 16:49
Maestro, проблема недавно решалась вот здесь: Получить MD5 хэш введенного текста
1
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 16:55
MikeSoft, не текста, а файла
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.08.2010, 17:40
iama, файл - это и есть набор символов...

Но если представлять сложно, то можно поступить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <IdHashMessageDigest.hpp>
 
String __fastcall MD5File(const String FileName)
{
  String Result;
  TFileStream *fs= new TFileStream(FileName, fmOpenRead | fmShareDenyWrite);
  try {
    TIdHashMessageDigest5 *MD5 = new TIdHashMessageDigest5();
    try {
      Result = MD5->HashStreamAsHex(fs);
    }
    __finally {
      delete MD5;
    }
  }
  __finally {
    delete fs;
  }
  return Result;
}
3
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
18.08.2010, 18:28  [ТС]
MikeSoft, У меня почему-то нет этого компонента.
Цитата Сообщение от MikeSoft Посмотреть сообщение
TIdHashMessageDigest5
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 18:28
MikeSoft, супер! И что, быстро работает для больших файлов?
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.08.2010, 19:40
Цитата Сообщение от Maestro Посмотреть сообщение
MikeSoft, У меня почему-то нет этого компонента.
Это не компонент. Это заголовочный файл, который необходимо включить в проект...
Посмотрите верхнюю часть файла с кодом, там вы найдёте область, в которую нужно добавить строчку:
C++
1
#include <IdHashMessageDigest.hpp>
iama, а вы не пробовали воспользоваться кодом, оценить производительность?
Для интереса могу сказать, что файл весом в 184 мб обрабатывается за 32 секунды.
Естественно, цифры у всех будут отличаться, т.к. конфигурация ПК у всех разная.

Ну и соответственно, не забывайте устанавливать Release-вариант проекта при подсчёте временных значений.
Для измерения времени можно воспользоваться функцией GetTickCount() (возвращаемый тип данных - long, значение отвечает миллисекундам)
2
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 19:52
хм, ну не знаю, по-моему это не очень бысто. фильм на гектар хешировало ~200 секунд, а так, для небольших файлов - очень удобно.
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
18.08.2010, 20:06  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Ребята, мы победили вопрос. Всем спасибо огромное!!!

Проект для подрастающего поколения прикрепляю. Программа открывает файл и подсчитывает его контрольную сумму MD5.

Вопрос решён.
Вложения
Тип файла: rar Hash_MD5.rar (20.7 Кб, 769 просмотров)
5
18.08.2010, 20:07

Не по теме:

Maestro, вот видишь, нет Форума лучше нашего.:rofl:

1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
18.08.2010, 20:13  [ТС]
MikeSoft, Файла IdHashMessageDigest.hpp у меня в Borland C++ Builder 6.0 нет.

Добавлено через 4 минуты
Папа Карло, Это да, мне особенно приятно оттого, что не стыдно задавать вопросы именно здесь, так как несмотря на то что здесь много профессионалов, но я не чувствую спесь ответа, мол ты ламер, вали нах со своим ламерским вопросом. Эта дружеская, нормальная атмосфера оооочень сильно чувствуется. Но если быть честным мне помог мой друг, он мне дал ссылку на форум, где скачать один исходик, скачав его я поэкспериментировал и решил вопрос самостоятельно, кстати, друг здесь, на форуме есть, правда ника его я не знаю. )))
1
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 54
13.05.2012, 15:07
А вот у меня такой вопрос. Имеются 2 текстовых файла, и мне нужно сравнить контрольные суммы строк этих файлов. То есть контрольную сумму первой строки первого файла сравнить с контрольной суммой первой строки второго файла и т.д. Как можно получить именно контрольную сумму строк?
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
13.05.2012, 18:32
FedExpress, а интересно, почему вы не удосужились предыдущую страницу данной темы перечитать?
По ссылке - явное решение: Получить MD5 хэш введенного текста
0
1 / 0 / 0
Регистрация: 22.10.2015
Сообщений: 6
29.09.2012, 01:35
Долго мучался в Borland Turbo C++ (урезаный 2006). Целый день. И пытался подключить ту же библиотеку что и автор и несколько других - все без толку. И даже этот проект не компилился - ошибки на неправильные объявления функций и классов внутри этих библиотек.

Пришлось установить BC6 - о чудо, скомпилилось сразу и заработало. *рукалицо*. Если кто будет мучатся - пробуйте на 6-й версси.

Самое интересное что файл IdHashMessageDigest.hpp в Turbo есть.... но один его инклуд вызывает 6 ошибок компиляции. *дверукилицо* Я не ООП-шник, поэтому с ними не справился. (Хотя во всем остальном с Турбо версией проблем не было)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2012, 01:35
Помогаю со студенческими работами здесь

Как получить хеш-сумму (SHA256) от файла
Приветствую. Как получить хеш-сумму от файла? (*.exe, *.dll, etc...).

Проверка файла по MD5,SHA1
Здравствуйте! Я построил небольшой алгоритм для проверки файлов на вредоносный код. Использую хеши. Можете помочь мне реализовать...

При попытке получить слепок MD5 - получаю SHA1
Здравствуйте. Собственно сабж. Хочу получить собственный ключ к API MapView. На сайте просят внести MD5 слепок сертификата. В командной...

Ввести в форму слово и получить его md5 и sha1 хэш.
Подскажите пожалуйста как ее использовать? &lt;?php $str = 'слово'; if (sha1($str) ===...

Как получить контрольную сумму CRC-8?
Здравствуйте, не могу получить контрольную сумму. Имеется готовый рабочий пример: A5 01 10 55 03 02 36 85 D2 При отправке этого...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru