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

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

18.08.2010, 15:33. Показов 22346. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru