|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
Получить хеш файла (CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH....)12.09.2010, 19:28. Показов 25475. Ответов 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 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|