我正在创建一个 BitTorrent 网站。
如果用户上传 .torrent 文件,我需要获取信息哈希以从跟踪器获取更多信息。
但是我似乎无法从文件中获得正确的信息哈希。
我已经从 mininova下载了 .torrent ( http://www.mininova.org/get/2886852 )。
根据 mininova,信息哈希应该是:6a7eb42ab3b9781eba2d9ff3545d9758f27ec239(http://www.mininova.org/det/2886852)。但是,当我尝试创建文件的信息哈希时,我得到以下信息: 3d05f149e604b1efaa0ed554a31e693755de7cb0
我不知道为什么我无法获得正确的信息哈希。
如果我理解正确,我必须从 torrent 数据的信息部分创建哈希。
相关代码:
$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)上它仍然不起作用。
我已经尝试过替换换行符/回车。
有任何想法吗?