我到处搜索寻找一个有效的JavaScript Bencode模块,但找不到,所以我决定编写自己的模块来生成洪流信息哈希。
据我所知,该模块在我为规范编写函数时工作。
字典 => 对象 => 键/值对
列表 => 数组对象 => 数字/值对
整数 => 数字对象
字符串。。。
无论如何,我解码种子文件的数据,然后对解码的信息键的值进行编码,接下来我使用 Google API 的 SHA-1 模块,信息哈希永远不会与原始哈希匹配。我是愚蠢的。
我已经彻底测试了我的模块。我可以解码数据将其传递给我的编码函数及其与原始数据的完全匹配,但是当我尝试从编码的信息部分值生成哈希时,我得到了不匹配。
我相信这是由于 JavaScript 糟糕的二进制字符串处理,我不知道如何诊断或解决这个问题。
当我根据内容类型标头从 get 请求输出数据时,字符串的二进制部分显示不同,这就是我得出这个结论的原因。
我知道种子文件是 UTF-8 字符编码的,但在那之后我很无助......
提前感谢您的任何帮助。
种子文件是 UTF-8 字符编码的,但部分不是。信息字典中的"pieces"键是严格 ASCII 编码的,将其检索为 UTF-8 会给我带来 [C] 错误,并且可能会对 JavaScript 造成同样的事情。