4

info_hash パラメータをどのように計算しますか? 別名、情報辞書に対応するハッシュ??

公式スペックより:

info_hash metainfo ファイルの情報値のベンコード形式の 20 バイトの sha1 ハッシュ。これは metainfo ファイルの部分文字列であることに注意してください。この値は、ほぼ確実にエスケープする必要があります。

これは、単にメタ情報ファイルから部分文字列を取得し、代表的なバイトに対して sha-1 ハッシュを実行することを意味しますか??

....これは私が12回試した方法ですが、成功していないため、結果のハッシュと最終的に必要なハッシュを比較したことを意味します..そしてそれらは異なります..その+トラッカーの応答はFAILURE、不明な急流です...またはなにか

では、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));

これは、'info' ブロックが torrent ファイルの最後のブロックであると仮定しています (間違っていますか?)

並べ替えなどは行わず、生の torrent ファイルの部分文字列を使用してください。

私のために働きます。

于 2012-05-24T17:48:55.657 に答える
2

メタファイルを bdecode します。次に、それは簡単ですsha1(bencode(metadata['info'])) (つまり、情報辞書のみを再度ベンコードし、それをハッシュします)。

于 2012-04-18T05:46:03.547 に答える