Я создаю сайт BitTorrent.
Если пользователь загружает файл .torrent, мне нужно получить хэш информации, чтобы получить больше информации с трекера.
Однако я не могу получить правильный хэш информации из файла.
Я загрузил .torrent (http://www.mininova.org/get/2886852) от Мининовой.
В соответствии с мининовой информацией хеш должен быть: 6a7eb42ab3b9781eba2d9ff3545d9758f27ec239 (http://www.mininova.org/det/2886852). Однако, когда я пытаюсь создать информационный хэш файла, я получаю следующее: 3d05f149e604b1efaa0ed554a31e693755de7cb0
Понятия не имею, почему я не могу получить правильный хэш информации.
Если я правильно понял, мне нужно создать хеш из раздела информации о торрент-данных.
Соответствующий код:
$bencode = new BencodeModel();
$data = $bencode->decode_file($form->fields['filename']->saved_file);
$hash = $torrentmanager->create_hash($data['info']);
BencodeModel (слишком долго для публикации здесь): http://pastebin.com/Zc5i94DQ
Функция создания хеша:
function create_hash($info)
{
$bencode = new BencodeModel();
return urlencode(sha1($bencode->encode($info)));
}
Я полностью в темноте, где я ошибаюсь. Любая помощь очень ценится!
Если вам нужна дополнительная информация, просто скажите мне, и я обновлю соответствующую информацию.
EDIT
По запросу запрашиваются данные для sha1:
var_dump($bencode->encode($info));
http://pastebin.com/HiQgRX6M
EDIT
Становится все более странным.
Я развернул сайт на работающем сервере (который работает в Linux), и там работает хеширование.
Однако на моем компьютере разработчика (Windows) он все еще не работает.
Я уже пробовал замененные разрывы строк / возврат каретки.
Есть идеи?