1

動作するJavaScriptBencodeモジュールを探してどこでも検索しましたが、見つからなかったので、トレント情報ハッシュを生成する目的で独自に作成することにしました。

私が仕様に合わせて関数を書いたので、モジュールは私の知る限りでは機能します。

辞書=>オブジェクト=>キー/値のペア

リスト=>配列オブジェクト=>数値/値のペア

整数=>オブジェクトの数

文字列..。

とにかく、トレントファイルのデータをデコードしてから、デコードされた情報キーの値をエンコードします。次に、Google APIのSHA-1モジュールを使用しますが、情報ハッシュが元のファイルと一致することはありません。私は愚かな設立です。

モジュールを徹底的にテストしました。データをデコードしてエンコード関数に渡し、元のデータと完全に一致させることはできますが、エンコードされた情報セクションの値からハッシュを生成しようとすると、不一致が発生します。

これはJavaScriptのバイナリ文字列の処理が不十分なためだと思いますが、この問題を診断または解決する方法がわかりません。

content-typeヘッダーに応じてgetリクエストからデータを出力すると、文字列のバイナリ部分の表示が異なり、この結論に達した理由です。

トレントファイルがUTF-8文字でエンコードされていることは理解していますが、その後は無力です...

よろしくお願いします。

4

1 に答える 1

0

トレントファイルはUTF-8文字でエンコードされていますが、その一部はエンコードされていません。情報辞書の「pieces」キーは厳密にASCIIエンコードされており、UTF-8として取得すると[C]でエラーが発生し、JavaScriptでも同じように処理される可能性があります。

于 2013-08-24T03:50:48.170 に答える