基本上,我正在爲實驗目的構建一個小跟蹤器。我已經走得很遠了,現在正在開發部分。從UrlEncoded查詢字符串計算info_hash
我真的搞不清楚是如何解碼提供的info_hash查詢字符串。
從規範,它是一個 url編碼20字節的SHA1哈希,這讓我寫這樣的代碼,
byte[] foo = Encoding.Default.GetBytes(HttpUtility.UrlDecode(infoHash));
string temp = "";
foreach (byte b in foo)
{
temp += b.ToString("X");
}
其中給出 '臨時' 下面的值,
5D3F3F3F3F5E3F3F3F153FE4033683F55693468
第一個和最後幾個字符是正確的。這是原始info_hash,
%5d%96%b6%f6%84%5e%ea%da%c5%15%c4%0e%403h%b9Ui4h
而這正是uTorrent的和我自己都跟蹤器給了我作爲info_hash從torrent文件生成它的時候,
5D96B6F6845EEADAC515C40E403368B955693468
我在做什麼錯?
謝謝!這個例子像一個魅力,雖然當用info_hash查詢字符串替換硬編碼的字符串時,它會變得混亂起來。 var s = context.Request.QueryString [「info_hash」] 給我一個亂碼的字符串,而不是查詢字符串的字符串值。 – Viktor 2009-12-06 17:03:46
沒關係,我去了context.Request.Query路線。猜猜我必須從那裏解析它。謝謝! – Viktor 2009-12-06 17:08:03