基本上,我正在构建一个用于实验目的的小型跟踪器。我已经走了很远,现在正在处理公告部分。
我真的不知道我应该如何解码提供的 info_hash 查询字符串。
从规范来看,它是一个urlencoded 20-byte SHA1 hash,这让我写了这段代码,
byte[] foo = Encoding.Default.GetBytes(HttpUtility.UrlDecode(infoHash));
string temp = "";
foreach (byte b in foo)
{
temp += b.ToString("X");
}
这给了'temp'以下值,
5D3F3F3F3F5E3F3F3F153FE4033683F55693468
前几个字符和最后几个字符是正确的。这是原始的 info_hash,
%5d%96%b6%f6%84%5e%ea%da%c5%15%c4%0e%403h%b9Ui4h
这就是 uTorrent 和我自己的跟踪器在从 torrent 文件生成它时给我的 info_hash,
5D96B6F6845EEADAC515C40E403368B955693468
我究竟做错了什么?