2010-07-17 48 views

回答

3

這是一個原始的十六進制表示。使用pack()H將其轉換。然後URL編碼它。

1

得到了同事此蟒片斷,

r = '' 
s = 'fda164e7af470f83ea699a529845a9353cc26576' 
for n in range(0, len(s), 2): 
    r += '%%%s' % s[n:n+2].upper() 
print r 

輸出:%FD%A1%64%E7%AF%47%0F%83%EA%69%9A%52%98%45% A9%35%3C%C2%65%76

工程就像一個魅力。

編輯:就像一個魅力用於獲取跟蹤器給回狀態200(OK),但仍檢索洪流細節不工作...

1

如果有人遇到問題和遇到這在將來的線程:這個問題的訣竅是使用PHP: sha1函數的bool $raw_output參數,並將其設置爲「true」。

BDecode/DEncode類可以找到HERE。這個名爲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哈希轉換爲原始二進制。