Параметр torrent info_hash
Как рассчитать параметр info_hash? Ака хеш соответствующий информационному словарю??
Из официальных спецификаций:
info_hash 20-байтовый хэш sha1 закодированной формы информационного значения из файла metainfo. Обратите внимание, что это подстрока файла metainfo. Это значение почти наверняка придется избежать.
Означает ли это просто получить подстроку из файла мета-информации и сделать хэш sha-1 в репрезентативных байтах??
.... потому что так я пробовал 12 раз, но безуспешно, то есть я сравнил полученный хеш с тем, который должен был получиться... и они отличаются.. что + ответ трекера - НЕИСПРАВНОСТЬ, неизвестный торрент... или что-то
Так как вы рассчитываете info_hash?
3 ответа
bdecode метафайл, тогда это просто "sha1(bencode(metadata['info']))" "(то есть bencode только информация снова, затем хэшируйте это).
Метафайл уже закодирован, поэтому я не понимаю, почему вы снова его кодируете?
Я, наконец, получил это работает в коде Java, вот мой код:
byte metaData[]; //the raw .torrent file
int infoIdx = ?; //index of 'd' right after the "4:info" string
info_hash = SHAsum(Arrays.copyOfRange(metaData, infoIdx, metaData.length-1));
Это предполагает, что блок 'info' является последним блоком в торрент-файле (не так?)
Не сортируйте или что-нибудь в этом роде, просто используйте подстроку необработанного торрент-файла.
Работает для меня.
Посетите https://gist.github.com/shxsun/9085646, это код Python, объясняет, как info_generate, удачи.