19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
1 | |
Получить хеш файла (CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH....)12.09.2010, 19:28. Показов 23225. Ответов 33
Метки нет (Все метки)
Нужно написать приложение выводящее один любой хеш указанного файла, независящий от названия файла.
CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH.... Поделитесь, если у кого есть или подскажите самый простой способ, ... может есть просто заголовочный файл с функцией или готовый схожий пример... Спасибо всем, кто поможет
0
|
12.09.2010, 19:28 | |
Ответы с готовыми решениями:
33
Генерация MD5 хеш суммы файла Как получить контрольную сумму(MD5, SHA1, SHA256) у файла Как получить MD5-хеш файла Проверка файла по MD5,SHA1 |
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
12.09.2010, 19:54 [ТС] | 3 |
А как же, уже две либы пробовал.... или вы имеете ввиду самому функцию писать?
0
|
12.09.2010, 19:56 | 4 |
Если хотите пользоваться либами, то есть хорошая CryptoPP - мне нравится.
Если хотите написать собственную реализацию, то алгоритм CRC32 - ну проще просто не бывает. Если Вы пробовали, то привели бы свои попытки сюда, что именно не получается.
1
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
12.09.2010, 20:10 [ТС] | 5 |
На реализацию алгоритма CRC32 времени нет.
Сейчас пробовал вот это http://hashlib2plus.sourceforge.net/ но при компиляции выскакивают непонятные ошибки...что-то делаю не так, а понять что именно не могу. Пойду почитаю про CryptoPP Добавлено через 5 минут Скачал Crypto++ 5.6.1 md5.cpp и md5.h Добавил их в проект. Не подскажете как в коде применить? Файл, хеш которого нужно получить, лежит рядом с приложением под названием "ReadMe.txt"
0
|
12.09.2010, 20:25 | 6 | |||||
написал за три минуты на Си. Код конечно ужасно некрасивый. Но как пример вполне пойдет.
Чтобы использовать CryptoPP нужны не только эти два файла. Большинство файлов в библиотеке как правило взаимосвязаны.
1
|
12.09.2010, 20:25 | 7 |
http://ru.wikipedia.org/wiki/CRC#CRC-32
а вообще-то, в openssl есть большинство известных хеш алгоритмов.
1
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
12.09.2010, 20:46 [ТС] | 8 |
fasked спасибо, работает! Хеш выводится
Только после отработки приложение зависает с
0
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
12.09.2010, 20:58 [ТС] | 10 |
Да вроде как всё правильно... правда я щас начал сомневаться что CRC32 это то, что нужно.
Я правильно понял, это ведь контрольная сумма, а не хеш? Т.е. допустим если поменять местами два бита 1 и 0 в файле, CRC32 останется прежним? Всмысле если я скачиваю файл, то посути я могу просто сравнивать кол-во полученных байт с весом файла. Только если размер файла может быть большим числом, то CRC32 всегда фиксировано 8 байт... вот и вся разница.. Правильно?
0
|
12.09.2010, 21:07 | 11 |
Нет неправильно, значение CRC зависит от последовательности бит, а не от их количества. Если поменять в файле 2 бита местами, то CRC тоже изменится. Контрольная сумма и hash-сумма это по сути одно и тоже.
CRC - нормальная штука для контроля целостности файлов (имеется в виду ошибки передачи, например в процессе передачи файла по сети помеха повлияла на один бит). Более серьезные вещи подойдут для криптографических операций (шифрование, вычисление ЭЦП - когда имеется противник, который специальный образом преобразует информацию). CRC - сильно подвержена коллизиям, но процент случайного совпадения близок к 0. Очень близок.
2
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
12.09.2010, 21:24 | 12 |
Если файлов передаётся много, лучше всётаки использовать что-то понадежнее. Не слышал чтобы в файлообменных сетях использовался именно crc32, тем более при нынешних скоростях.
TTH насколько я знаю самый мощный из списка вверху...
0
|
12.09.2010, 21:43 | 13 |
Для проверки целостности файлов при скачивании и проверки на оригинальность (то есть никто посреди передачи не смодифицировал файл) используют md5, sha1. Первый считается менее надёжным, но для большинства случаев хватает.
1
|
6 / 6 / 0
Регистрация: 28.07.2010
Сообщений: 12
|
|
12.09.2010, 22:35 | 14 |
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 | 15 |
Прикрепил архив, папка librhash, в ней исходники функций для получения всех хешей.
Отпишитесь если работают.
2
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
||||||||||||||||
13.09.2010, 13:37 [ТС] | 16 | |||||||||||||||
fasked в вашем варианте получается число типа int, которое выводится как CRC через
Мне для сравнения нужна строка, т.е. char Чтобы вывести можно было так:
Добавлено через 12 минут Подскажите где достать файл
0
|
13.09.2010, 15:59 | 18 | |||||||||||||||
Контрольная сумма это всегда число и с числами работать всегда удобне, чем со строками. Я бы посоветовал Вам с другой стороны преобразовывать строку в число, но если уж так необходимо, то копайте в сторону функций itoa, sprintf.
Например. Так как размер хэша CRC32 это 32-битное число, то необходимо создать буфер char hash[9]. 9 потому что последним символом будет нуль-терминатор '\0' - символ конца строки. Тогда вывод будет производиться при помощи itoa так
Поэтому можно воспользоваться функцией sprintf таким образом:
Кстати по поводу ошибки, скорее всего это связано с тем, что я забыл закрыть файл. В конце программы также добавьте:
1
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
13.09.2010, 18:09 [ТС] | 19 |
Большое спасибо, теперь всё без ошибок работает!
0
|
1 / 1 / 2
Регистрация: 20.09.2010
Сообщений: 12
|
|
20.09.2010, 03:35 | 20 |
Простите, 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.09.2010, 03:35 | |
Помогаю со студенческими работами здесь
20
При попытке получить слепок MD5 - получаю SHA1 Ввести в форму слово и получить его md5 и sha1 хэш. Получить хеш md5 md5 хеш файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |