我正在創建一個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