В случае, если у кого-то возникнут проблемы, и он столкнется с этим потоком в будущем: вся хитрость в этом вопросе заключается в использовании аргумента bool $raw_output
функции PHP: sha1 , установив для него значение "true" ».
Классы BDecode / DEncode можно найти ЗДЕСЬ . Этот проект, называемый Trackon, также включает в себя множество других полезных классов для взаимодействия с торрент-трекерами и файлами.
Итак, в PHP что-то вроде этого будет работать для получения правильного информационного хэша для очистки трекера для деталей:
include('./path/to/BDecode.php');
include('./path/to/BEncode.php');
function getHash($torFile){
$tfile = BDecode(file_get_contents($torFile));
$infohash = sha1(BEncode($tfile["info"]), TRUE);
return urlencode($infohash);
}
Тогда просто назовите это так:
$hash = getHash('./path/to/.torrent');
Надеюсь, это поможет кому-то там. Я все еще чесал голову после прочтения многих постов о том, как получить правильный информационный хеш. Я понимаю, почему это нигде не упоминалось сейчас, хотя этот аргумент был добавлен в PHP 5. Если вы не используете PHP 5, вам придется преобразовать хэш sha1 в необработанный двоичный файл после его вычисления.