我到处寻找一个可以工作的 JavaScript Bencode 模块,但找不到,所以我决定自己写一个来生成种子信息哈希。
当我将功能写入规范时,该模块尽我所知。
字典 => 对象 => 键/值对
列表 => 数组对象 => 数字/值对
整数 => 数字对象
字符串...
无论如何,我对 torrent 文件的数据进行解码,然后对解码后的 info key 的值进行编码,接下来我使用 Google API 的 SHA-1 模块,并且 info hash 永远不会与原始文件匹配。我傻了。
我已经彻底测试了我的模块。我可以将数据解码并传递给我的编码函数,并且它与原始数据完全匹配,但是当我尝试从编码的信息部分值生成散列时,我得到一个不匹配的结果。
我相信这是由于 JavaScript 糟糕的二进制字符串处理,我不知道如何诊断或解决这个问题。
当我根据内容类型标头从获取请求中输出数据时,字符串的二进制部分显示不同,这就是我得出这个结论的原因。
我知道种子文件是 UTF-8 字符编码的,但在那之后我很无助......
感谢您提前提供任何帮助。