Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Суммирование sha1 значений. |
Автор: andrew_121 9.8.2009, 01:05 |
Здравствуйте. Нужно узнать sha1 хэш значение контента, который скачивается torrent-файлом. Т.е. В торрент файле есть хэш суммы каждого блока. Как их суммировать, чтоб узнать хэш всего контента? Торрент клиенты это умеют. Пересмотрел коды rTorrent, libtorrent, libtorrent-rasterbar. Но так ничего не понял. Может кто знает? Спасибо! |
Автор: Alexandr87 9.8.2009, 09:02 | ||
никак. |
Автор: andrew_121 9.8.2009, 13:36 |
Alexandr87, |
Автор: skyboy 9.8.2009, 14:39 |
откуда информация? |
Автор: andrew_121 9.8.2009, 22:01 |
К примеру, uTorrent. Если, с отключенным интернетом, добавить торрент-файл, то он покажет хэш контента. |
Автор: skyboy 9.8.2009, 23:44 |
а в торрент-файле, значит, хеш всего контента не хранится? |
Автор: andrew_121 10.8.2009, 03:12 |
Нет. Только хэши кусков. В том то и вопрос, как их суммировать? |
Автор: Alexandr87 10.8.2009, 05:03 | ||
Это невозможно алгоритмически. Есть уверенность что они показывают именно значение sha1 функции всего контента? Может хэш функция с торрент файла, или еще какая-либо функция со значения sha-1 значений для всех кусков? |
Автор: Dims 10.8.2009, 14:51 |
По логике действительно, это должно быть невозможно. Ведь хэш функция как правило даёт необратимый код, иначе его было бы легко подделать. Поэтому я согласен с предыдущими ораторами: либо (1) в торрент файле хранятся не только коды кусков, но и код всего контента, (2) либо общий хеш код -- это не код всего контента, а, например, хэш-код всех кодов кусков. Добавлено через 7 минут и 38 секунд А вообще-то... Я нашёл http://en.wikipedia.org/wiki/File:SHA-1.svg. Из неё мне понятно, как алгоритм преобразует 5 32-битных слов. Но что он делает, когда ему даётся больше, например, 10? Может быть, он разбивает их на пятёрки, преобразует, а потом просто суммирует результаты? Тогда из хэш-кодов кусков можно получить общий хэш код простым суммированием. |
Автор: Dims 10.8.2009, 15:07 |
А каковы блоки в торренте? В sha1 тоже есть блоки по 512. Может быть это те самые блоки? http://www.itl.nist.gov/fipspubs/fip180-1.htm |
Автор: andrew_121 10.8.2009, 18:20 | ||||||
Нет. В торрент-файле хранятся только хэш коды кусков.
Возможно. Сейчас проверю.
Да, так и есть. Именно эти значения записываются в торрент файл, в виде raw. При создании торрент-файла, нужно указать размер блока. И для каждого такого блока формируется хэш. Кол-во записанных хэш значений равняется кол-ву блоков. |
Автор: Dims 10.8.2009, 20:25 |
Так что алгоритм делает, когда ему надо захешить файл длиннее 5 слов? |
Автор: andrew_121 10.8.2009, 21:30 | ||
Не понял вопроса... |
Автор: Dims 10.8.2009, 22:00 |
На картинке, как я понял, показано, как преобразовать пять 32-битных слов, что составляет 160 бит. А как преобразовать 10 слов? Ведь надо как-то агрегировать? |
Автор: Alexandr87 11.8.2009, 08:37 | ||
Вчера проверил. Не совпадают. Так что, это не хэш всего контента. Может быть это поле info_hash http://wiki.theory.org/BitTorrentSpecification#Tracker_Request_Parameters |
Автор: andrew_121 11.8.2009, 15:50 |
Странно ![]() |
Автор: cupper 9.10.2009, 22:03 |
Люди помогите понять их каких данных должна извлекаться хешсумма которая передается в info_hash при запросе на сервер ? это поле pieces или все идущее после поля info не как немогу понять этого. |