我想根据内容哈希来缓存 torrent 块。在 v2 中,不是简单的块哈希,而是一棵默克尔树,我不太理解它的确切组成。
我正在使用 MonoTorrent 库,它有
IPieceHashes.GetHash(hashIndex)
函数,其中 hashIndex
从 0 到件数 - 1 变化,但从该函数返回的值似乎与我通过计算 SHA256 得到的值不匹配数据在片中。
我只获得不占用整个块的文件的匹配值。哈希值是增量的吗?是否可以在不下载单个块的情况下获取它们的哈希值?
我的错误是我混淆了 16 KiB 块和 torrent 片段。 Torrent 有 32 KiB 片段,因此我收到了两次请求,每个片段长度 > 16 KiB,前半部分为 16 KiB,后半部分为 16 KiB 以下。当然,一半的哈希值(例如块的哈希值)与完整的哈希值不匹配。