|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
Получить хеш файла (CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH....)12.09.2010, 19:28. Показов 25511. Ответов 33
Метки нет (Все метки)
Нужно написать приложение выводящее один любой хеш указанного файла, независящий от названия файла.
CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH.... Поделитесь, если у кого есть или подскажите самый простой способ, ... может есть просто заголовочный файл с функцией или готовый схожий пример... Спасибо всем, кто поможет
0
|
|
| 12.09.2010, 19:28 | |
|
Ответы с готовыми решениями:
33
Как получить MD5-хеш файла |
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 12.09.2010, 19:54 [ТС] | |
|
А как же, уже две либы пробовал.... или вы имеете ввиду самому функцию писать?
0
|
|
|
|
|
| 12.09.2010, 19:56 | |
|
Если хотите пользоваться либами, то есть хорошая CryptoPP - мне нравится.
Если хотите написать собственную реализацию, то алгоритм CRC32 - ну проще просто не бывает. Если Вы пробовали, то привели бы свои попытки сюда, что именно не получается.
1
|
|
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 12.09.2010, 20:10 [ТС] | |
|
На реализацию алгоритма CRC32 времени нет.
Сейчас пробовал вот это http://hashlib2plus.sourceforge.net/ но при компиляции выскакивают непонятные ошибки...что-то делаю не так, а понять что именно не могу. Пойду почитаю про CryptoPP ![]() Добавлено через 5 минут Скачал Crypto++ 5.6.1 md5.cpp и md5.h Добавил их в проект. Не подскажете как в коде применить? Файл, хеш которого нужно получить, лежит рядом с приложением под названием "ReadMe.txt"
0
|
|
|
|
||||||||
| 12.09.2010, 20:25 | ||||||||
Чтобы использовать CryptoPP нужны не только эти два файла. Большинство файлов в библиотеке как правило взаимосвязаны.
1
|
||||||||
|
|
||
| 12.09.2010, 20:25 | ||
|
а вообще-то, в openssl есть большинство известных хеш алгоритмов.
1
|
||
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
||
| 12.09.2010, 20:46 [ТС] | ||
|
fasked спасибо, работает! Хеш выводится
Только после отработки приложение зависает с
0
|
||
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 12.09.2010, 20:58 [ТС] | |
|
Да вроде как всё правильно... правда я щас начал сомневаться что CRC32 это то, что нужно.
Я правильно понял, это ведь контрольная сумма, а не хеш? Т.е. допустим если поменять местами два бита 1 и 0 в файле, CRC32 останется прежним? Всмысле если я скачиваю файл, то посути я могу просто сравнивать кол-во полученных байт с весом файла. Только если размер файла может быть большим числом, то CRC32 всегда фиксировано 8 байт... вот и вся разница.. Правильно?
0
|
|
|
|
||
| 12.09.2010, 21:07 | ||
|
CRC - нормальная штука для контроля целостности файлов (имеется в виду ошибки передачи, например в процессе передачи файла по сети помеха повлияла на один бит). Более серьезные вещи подойдут для криптографических операций (шифрование, вычисление ЭЦП - когда имеется противник, который специальный образом преобразует информацию). CRC - сильно подвержена коллизиям, но процент случайного совпадения близок к 0. Очень близок.
2
|
||
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 12.09.2010, 21:24 | |
|
Если файлов передаётся много, лучше всётаки использовать что-то понадежнее. Не слышал чтобы в файлообменных сетях использовался именно crc32, тем более при нынешних скоростях.
TTH насколько я знаю самый мощный из списка вверху...
0
|
|
|
|
|
| 12.09.2010, 21:43 | |
|
Для проверки целостности файлов при скачивании и проверки на оригинальность (то есть никто посреди передачи не смодифицировал файл) используют md5, sha1. Первый считается менее надёжным, но для большинства случаев хватает.
1
|
|
|
6 / 6 / 0
Регистрация: 28.07.2010
Сообщений: 12
|
|
| 12.09.2010, 22:35 | |
|
TTH лучше md5 и по надежности и по скорости. Применяется в DC клиентах. На моём компе хеширует со скоростью 130 мб/с, т.е. скорость ограничена винчем. MD5 40 мб/с
Вот http://www.cs.technion.ac.il/~biham/Reports/Tiger/ если кто разжуёт, мнеб тоже пригодилось
2
|
|
|
6 / 6 / 0
Регистрация: 28.07.2010
Сообщений: 12
|
||
| 12.09.2010, 22:59 | ||
|
Прикрепил архив, папка librhash, в ней исходники функций для получения всех хешей.
Отпишитесь если работают.
2
|
||
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
||||||||||||||||
| 13.09.2010, 13:37 [ТС] | ||||||||||||||||
|
fasked в вашем варианте получается число типа int, которое выводится как CRC через
Мне для сравнения нужна строка, т.е. char Чтобы вывести можно было так:
Добавлено через 12 минут Подскажите где достать файл
0
|
||||||||||||||||
|
|
|
| 13.09.2010, 14:34 | |
|
1
|
|
|
|
|||||||||||||||||
| 13.09.2010, 15:59 | |||||||||||||||||
|
Например. Так как размер хэша CRC32 это 32-битное число, то необходимо создать буфер char hash[9]. 9 потому что последним символом будет нуль-терминатор '\0' - символ конца строки. Тогда вывод будет производиться при помощи itoa так
Поэтому можно воспользоваться функцией sprintf таким образом:
Кстати по поводу ошибки, скорее всего это связано с тем, что я забыл закрыть файл. В конце программы также добавьте:
1
|
|||||||||||||||||
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
||
| 13.09.2010, 18:09 [ТС] | ||
|
Большое спасибо, теперь всё без ошибок работает!
, можете выложить?
0
|
||
|
1 / 1 / 2
Регистрация: 20.09.2010
Сообщений: 12
|
|
| 20.09.2010, 03:35 | |
|
Простите, fasked. Но у меня почему-то не работает ваша прога. Пишет ошибку, я так понимаю несовместимости типов
W8012 Comparing signed and unsigned values for(i = 0; i < file_size / BUFSIZ; ++i) for(j = 0; j < file_size; ++j) в этих строках. Но даже если поменять типы, толком не запускается. Компилится, пролетают окна, но результат не выдает. Это у меня проблема? Буду благодарен за помощь.
0
|
|
| 20.09.2010, 03:35 | |
|
Помогаю со студенческими работами здесь
20
Проверка файла по MD5,SHA1 При попытке получить слепок MD5 - получаю SHA1
Получить хеш md5 md5 хеш файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|