1

我到处寻找一个可以工作的 JavaScript Bencode 模块,但找不到,所以我决定自己写一个来生成种子信息哈希。

当我将功能写入规范时,该模块尽我所知。

字典 => 对象 => 键/值对

列表 => 数组对象 => 数字/值对

整数 => 数字对象

字符串...

无论如何,我对 torrent 文件的数据进行解码,然后对解码后的 info key 的值进行编码,接下来我使用 Google API 的 SHA-1 模块,并且 info hash 永远不会与原始文件匹配。我傻了。

我已经彻底测试了我的模块。我可以将数据解码并传递给我的编码函数,并且它与原始数据完全匹配,但是当我尝试从编码的信息部分值生成散列时,我得到一个不匹配的结果。

我相信这是由于 JavaScript 糟糕的二进制字符串处理,我不知道如何诊断或解决这个问题。

当我根据内容类型标头从获取请求中输出数据时,字符串的二进制部分显示不同,这就是我得出这个结论的原因。

我知道种子文件是 UTF-8 字符编码的,但在那之后我很无助......

感谢您提前提供任何帮助。

4

1 回答 1

0

torrent 文件是 UTF-8 字符编码的,但它的一部分不是。info 字典中的“pieces”键是严格 ASCII 编码的,将其检索为 UTF-8 会导致我使用 [C] 时出错,并且可能会使用 JavaScript 对你做同样的事情。

于 2013-08-24T03:50:48.170 回答