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

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

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

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

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

Пробовал самостоятельно поиском найти решение, но дальше этого не продвинулся
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....)
Нужно написать приложение выводящее один любой хеш указанного файла, независящий от названия файла....

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

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

16
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 15:35 2
можно поработать через шелл с md5sum
0
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
18.08.2010, 15:39  [ТС] 3
iama, Можно показать на действующем примере как?
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 15:46 4
Я просто подал идею, самому как-то не приходилось с командной строкой работать.
0
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.08.2010, 16:49 5
Maestro, проблема недавно решалась вот здесь: Получить MD5 хэш введенного текста
1
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 16:55 6
MikeSoft, не текста, а файла
1
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.08.2010, 17:40 7
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
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
18.08.2010, 18:28  [ТС] 8
MikeSoft, У меня почему-то нет этого компонента.
Цитата Сообщение от MikeSoft Посмотреть сообщение
TIdHashMessageDigest5
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 18:28 9
MikeSoft, супер! И что, быстро работает для больших файлов?
0
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.08.2010, 19:40 10
Цитата Сообщение от Maestro Посмотреть сообщение
MikeSoft, У меня почему-то нет этого компонента.
Это не компонент. Это заголовочный файл, который необходимо включить в проект...
Посмотрите верхнюю часть файла с кодом, там вы найдёте область, в которую нужно добавить строчку:
C++
1
#include <IdHashMessageDigest.hpp>
iama, а вы не пробовали воспользоваться кодом, оценить производительность?
Для интереса могу сказать, что файл весом в 184 мб обрабатывается за 32 секунды.
Естественно, цифры у всех будут отличаться, т.к. конфигурация ПК у всех разная.

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

Решение

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

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

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

Не по теме:

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

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru