4

如何计算info_hash 参数?又名信息字典对应的哈希?

来自官方规格:

info_hash 元信息文件中信息值的编码形式的 20 字节 sha1 散列。请注意,这是元信息文件的子字符串。这个值几乎肯定会被转义。

这是否意味着只需从元信息文件中获取子字符串并对代表字节进行 sha-1 哈希处理?

....因为这是我尝试 12 次但没有成功的方式,这意味着我将生成的哈希与我最终应该得到的哈希进行了比较..它们不同..+跟踪器响应失败,未知洪流...或某物

那么如何计算 info_hash 呢?

4

2 回答 2

4

元文件已经被编码,所以我不明白你为什么要再次编码?

我终于在Java代码中得到了这个工作,这是我的代码:

byte metaData[];  //the raw .torrent file

int infoIdx = ?;  //index of 'd' right after the "4:info" string

info_hash = SHAsum(Arrays.copyOfRange(metaData, infoIdx, metaData.length-1));

这假设“信息”块是种子文件中的最后一个块(错误?)

不要排序或类似的东西,只需使用原始种子文件的子字符串。

为我工作。

于 2012-05-24T17:48:55.657 回答
2

bdecode 元文件。然后它很简单sha1(bencode(metadata['info'])) (即再次只对信息字典进行编码,然后对其进行哈希处理)。

于 2012-04-18T05:46:03.547 回答