我正在创建一个BitTorrent网站。创建Torrent文件信息哈希的问题
如果用户上传.torrent文件我需要获取信息哈希以从跟踪器获取更多信息。
但是我似乎无法从文件中获取正确的信息哈希值。
我已经从mininova下载了一个.torrent(http://www.mininova.org/get/2886852)。
根据mininova信息哈希应该是:6a7eb42ab3b9781eba2d9ff3545d9758f27ec239(http://www.mininova.org/det/2886852)。但是,当我尝试创建文件的信息散列时,我得到以下内容:3d05f149e604b1efaa0ed554a31e693755de7cb0
我没有任何线索知道为什么我无法获得正确的信息散列。
如果我理解正确,我必须从torrent数据的info部分创建哈希。
相关的代码:
$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)));
}
我完全在黑暗地方我出错了。任何帮助深表感谢!
如果您需要更多信息,请告诉我,我会更新相关信息。
编辑
由于请求的数据为SHA1:
var_dump($bencode->encode($info));
编辑
这是越来越奇怪。
我已经将该站点部署到运行在Linux服务器上的服务器,并且散列工作在那里。
但是在我的开发机器(Windows)上它仍然不起作用。
我已经尝试更换linebreaks /回车。
任何想法?
这也将有助于告诉我们什么你最终投入到'sha1'。 – Jon
@Jon:有问题更新 – PeeHaa
@hakre:因为洪流只能有1个信息散列,并且它被用来'刮'信息。当我手动尝试使用该散列获取信息时,我得到了我需要的信息:http://tracker.mininova.org/scrape?info_hash=6a7eb42ab3b9781eba2d9ff3545d9758f27ec239 – PeeHaa